Ho un semplice orizzontale UIStackView
con diverse UIViews impilate all'interno. Il mio obiettivo è creare spaziature variabili tra le viste. Sono ben consapevole di poter creare uno spazio costante tra le sottoview usando la proprietà "spaziatura". Tuttavia il mio obiettivo è creare uno spazio variabile. Si prega di notare che, se possibile, vorrei evitare di utilizzare viste invisibili che fungono da distanziatori.Come posso creare UIStackView con spaziatura variabile tra le viste?
Il meglio che ho avuto è stato quello di avvolgere le mie UIViews in un UIStackView separato e utilizzare layoutMarginsRelativeArrangement = YES per rispettare i margini di layout del mio stack interno. Speravo di poter fare qualcosa di simile con qualsiasi UIView senza ricorrere a questo brutto lavoro. Qui è il mio codice di esempio:
// Create stack view
UIStackView *stackView = [[UIStackView alloc] init];
stackView.translatesAutoresizingMaskIntoConstraints = NO;
stackView.axis = UILayoutConstraintAxisHorizontal;
stackView.alignment = UIStackViewAlignmentCenter;
stackView.layoutMarginsRelativeArrangement = YES;
// Create subview
UIView *view1 = [[UIView alloc] init];
view1.translatesAutoresizingMaskIntoConstraints = NO;
// ... Add Auto Layout constraints for height/width
// ...
// I was hoping the layoutMargins would be respected, but they are not
view1.layoutMargins = UIEdgeInsetsMake(0, 25, 0, 0);
// ... Create more subviews
// UIView view2 = [[UIView alloc] init];
// ...
// Stack the subviews
[stackView addArrangedSubview:view1];
[stackView addArrangedSubview:view2];
Il risultato è una pila con vista proprio accanto a vicenda con la spaziatura:
Grazie ma speravo di non dover ricorrere a viste vuote per aggiungere spazio o tornare all'Auto Layout. Anche se UIStackView non supporta il mio caso d'uso, potrei aver bisogno di farlo comunque. – yura
Perché vuoi che la spaziatura sia variabile? Puoi avere spaziatura variabile se usi "distribuzione" uguale centraggio ". Ciò renderà i centri di uguale larghezza, ma la spaziatura varierà. Spiega di più sul tuo caso d'uso. –
Fondamentalmente, ho diverse viste che ho bisogno di distribuire orizzontalmente (o verticalmente) con uno spazio predeterminato tra le viste, che può avere o meno lo stesso valore. Voglio essere in grado di specificare quei margini con layoutMargins o qualche altro meccanismo. – yura