Sto creando un modulo di base con vari campi. Mi piacerebbe usare UIStackView
per impaginare tutti i controlli. Come farei quanto segue in modo che i controlli siano allineati correttamente? Il UIStackView
è il modo corretto per farlo?Layout modulo UIStackView
risposta
Si può sicuramente usare StackViews per raggiungere questo obiettivo.
Il modo in cui organizzare le visualizzazioni Stack dipende da come si desidera gestire il proprio allineamento.
Ecco cosa vi consiglio:
- Mettere le etichette in una stackview allineata verticalmente e
- Metti la tua campi di testo in un altro stackview allineata verticalmente
- Mettere le due stackviews in uno stackview allineate orizzontalmente
Probabilmente vorrai impostare il tuo distribution
per riempire in modo uguale sui due riquadri più piccoli, quindi impostare spacing
in b e lo stesso per ogni stackview più piccolo. Infine, sarai in grado di impostare la spaziatura nella vista della pila orizzontale per impostare lo spazio tra il testo e i campi di testo. (La parte finale è la ragione per cui li impostarei in questo modo.)
Apple suggests creazione di viste di pila orizzontali con ogni etichetta e campo, e quindi metterle in una vista di pila verticale.
Questo ha senso nel senso che se in seguito si modifica uno dei controlli in un controllo diverso (ad esempio un pulsante popup), è possibile mantenere allineate le linee di base dell'etichetta e del controllo.
Penso che soddisfi totalmente i requisiti della mia domanda. Cosa succede se il layout è un po 'più complesso? Diciamo che c'è una linea visiva che separa le due file. Cosa poi? –
Avrei quindi due viste orizzontali dello stack contenenti testo e campi di testo, e una vista stack verticale contenente tutti gli elementi (stackview, seperator, stackview). È ancora possibile ottenere lo stesso effetto, solo leggermente meno elegante. Inoltre se soddisfa la tua domanda ti dispiace accettare la risposta? Saluti! –
Fatto. Quando dividi in questo modo come controlli lo spazio sinistro in modo che i campi di testo siano allineati correttamente? –