Immaginate questo scenario seguente. Hai un UIImageView e un UIButton. Il primo è 300x360, il secondo è 210x70. imageview
contiene un'immagine di catalogo, button
dice "catalogo aperto".Centrare due viste verticalmente utilizzando NSLayoutConstraint
vorrei posizionare gli elementi nella vista principale base ai seguenti requisiti:
i due elementi devono essere centrati orizzontalmente, cioè le coordinate center.x devono essere tutti uguali (vista, immagini e pulsante);
i due elementi devono essere centrati verticalmente nel modo seguente: separatore (flessibile) - imageview - separatore (fisso, diciamo 30 punti) - pulsante - separatore (flessibile). Il separatore più in alto e più in basso dovrebbe avere la stessa dimensione (questo è il significato di centrato).
Non riesco a farlo funzionare con NSLayoutConstraint.
Finora, ciò che ho fatto, è stato il centraggio della coordinata X dei due elementi utilizzando NSLayoutAttributeCenterX
e NSLayoutRelationEqual
con lo stesso attributo view
.
L'ultima parte, secondo la mia idea, è di fissare il loro allineamento verticale. Ho provato a utilizzare @"V:|-[imageview(360)]-[button(70)]-|"
ma non funzionerà (Unable to simultaneously satisfy constraints.
).
Se uso @"V:|-[imageview(360)]-[button]-|"
ottengo tutto parzialmente ok. Vale a dire, la parte superiore è perfetta ma il pulsante è teso in modo da riempire lo spazio tra il separatore interno e il fondo della vista.
Come è possibile rendere tali elementi di dimensioni fisse e consentire al layout automatico di capire come posizionarli nella vista?
In iOS 9, guarda UIStackView e UILayoutGuide per risolvere questo tipo di problemi. –