2016-04-11 18 views
9

Ho una UILabel e una UIView contiene altre sottoview fianco a fianco in Storyboard. L'UIView dovrebbe trovarsi di fronte al limite destro di UILabel (vincolo di trailing 1), ma ho anche bisogno di UIlabel (quello a sinistra) per impostare la sua larghezza uguale alla sua dimensione del contenuto a meno che non raggiunga una larghezza massima. Visivamente:AutoLayout per ridimensionare in modo dinamico altezza e larghezza UILabel

| Testo dell'etichetta | | UIViewWithSubviews |

E ho bisogno i seguenti vincoli:

1) Etichetta dovrebbe ridimensionare la larghezza saggio a meno che non colpisce una dimensione massima e l'altezza è anche dinamica che significa che quando il testo raggiunge la larghezza massima poi il ritorno a capo automatico si romperà la condanna a un'altra linea. e UIview diventerà verticale per UIlabel.

2) UIView deve essere sempre imbastito contro il bordo destro dell'etichetta uno al centro verticale.

Come si imposta in Storyboard?

Grazie In anticipo.

risposta

21

È questo ciò che ti serve?

enter image description here

Ecco come ho fatto in Interface Builder.

enter image description here

+0

Questa probabilmente è la migliore spiegazione su SO :) – Ahmed

7

1) Impostare un limite di larghezza su UILabel "Minore di O uguale a" per la larghezza massima desiderata.

2) Impostare il numero di righe per UILabel nello storyboard su 0. Ciò consente il wrapping che si sta cercando. Non impostare alcun vincolo di altezza.

3) Impostare il vincolo per centrare UIView verticalmente con UILabel.

4) Gli altri vincoli esistenti sono validi. Assicurati che UILabel abbia una posizione xey chiara, ad esempio ancorando ai bordi superiore e superiore della superview. Assicurarsi inoltre che UIView abbia vincoli sufficienti, se necessario, oltre al centraggio verticale e l'allineamento del bordo anteriore con UILabel.

Problemi correlati