Il mio disegno richiede che un pulsante sia centrato tra altri due oggetti. Uno degli oggetti si trova nel centro verticale della vista (verde). L'altro oggetto è una certa distanza dal bordo inferiore (verde). Ora il compito è centrare il terzo oggetto (rosso) tra gli altri due. Sto usando i nuovi vincoli di xcode6 e la mia vista è in wRegular hRegular mode. Questo sarebbe facile con il codice, ma sto cercando di usare lo storyboard per realizzare questo.Vincoli al centro e all'oggetto tra due oggetti
risposta
Ci sono un certo numero di approcci:
in IOS 9, il più semplice sarebbe quella di definire una verticale
UIStackedView
condistribution
di "spaziatura uguale" e quindiaddArrangedSubview
tre circolare subviewsUn'altra opzione in iOS 9 sarebbe quella di creare due
UILayoutGuide
(che rappresenterebbero i due punti interrogativi nell'immagine) , aggiungili alla superview condivisa conaddLayoutGuide
e definiscili per avere le stesse dimensioni l'una dell'altra. La corrispondente VFL potrebbe essere simile:"V:|[greenView1(==100)]-[layoutGuide1]-[redView(==50)]-[layoutGuide2(==layoutGuide1)]-[greenView2(==greenView1)]|"
Nelle versioni precedenti di iOS, invece di usare
UILayoutGuide
, si potrebbe semplicemente creare due punti di vista "spaziali" (UIView
con sfondo chiaro in modo che siano non visibile) quindi definire un vincolo in modo tale che le loro altezze siano identiche e quindi definire i vincoli di spaziatura verticale tra le cinque viste (i tre cerchi e le due viste spaziali) con una costante di zero.Potrebbe sembrare:
ho fatto quei punti di vista "distanziatori" visibile, per illustrare l'idea, ma, ovviamente, quando si imposta loro di essere trasparente in modo non si può vedere loro nell'interfaccia utente.
Questo è logicamente equivalente al metodo
UILayoutGuide
in IOS 9, salvo che iUIView
vista "distanziatori" solo portare un poco più in alto di unUILayoutGuide
. Ma nelle versioni iOS prima delle 9, questo è l'approccio comune a questo problema.
Puoi farlo con un solo distanziale. Pin la parte superiore del distanziatore nella parte inferiore del cerchio verde superiore. Pin il fondo del distanziatore nella parte superiore del cerchio verde inferiore. Pin il centro verticale del cerchio rosso al centro verticale del distanziatore. –
concordato. Un sacco di modi per scuoiare il gatto. Uso i singoli distanziali in modo che funzioni con più di tre cerchi senza trattare con i moltiplicatori (anche se ora puoi farlo anche tu). – Rob
Entrambe le grandi soluzioni! Mi piace che nella prima soluzione il pulsante rosso non abbia bisogno di essere un figlio delle viste spaziali. Grazie. –
Sono arrivato con l'approccio più semplice.
Basta seguire questi passaggi:
- aggiungere una vista tra di loro i due cerchio
- aggiungere il suo finale e spazio iniziale. (nel mio caso zero a superview)
- aggiungi lo spazio superiore e inferiore dai cerchi.
- ora mettere il vostro cerchio rosso nella vista recentemente aggiunto
- rendono orizzontalmente e verticalmente il centro da Alrignment Menu
per iOS9 controllare http://stackoverflow.com/a/33733753/ 1067147 – WINSergey