У меня есть простой горизонтальный UIStackView
с несколькими UIViews, уложенными внутри. Моя цель - создать переменный интервал между представлениями. Мне хорошо известно, что я могу создать постоянное пространство между подзонами, используя свойство «spacing». Однако моя цель - создать переменное пространство. Пожалуйста, обратите внимание: если это вообще возможно, я бы хотел избежать использования невидимых представлений, которые действуют как проставки.Как создать UIStackView с переменным расстоянием между представлениями?
Лучшее, что я придумал, заключалось в том, чтобы обернуть мои UIViews в отдельный UIStackView и использовать layoutMarginsRelativeArrangement = YES, чтобы уважать макеты макета моего внутреннего стека. Я надеялся, что смогу сделать что-то подобное с любым UIView, не прибегая к этой уродливой работе. Вот мой пример код:
// 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];
Результат стопка с видом прямо рядом друг с другом с интервалом:
Спасибо, но я надеялся, что мне не нужно прибегать к пустым представлениям, чтобы добавить место или вернуться к автомаке. Хотя, если UIStackView не поддерживает мой прецедент, мне все равно может понадобиться. – yura
Почему вы хотите, чтобы интервал был переменным? Вы можете иметь переменный интервал, если вы используете «распределение» равное центрирование. Это сделает центры равными ширинами друг от друга, но расстояние будет меняться. Объясните больше о вашем случае использования. –
В принципе, у меня есть несколько представлений, которые мне нужно распределять по горизонтали (или по вертикали) с заданным пространством между представлениями, которые могут иметь или не быть одинакового значения. Я хочу иметь возможность указывать эти поля с помощью layoutMargins или какого-либо другого механизма. – yura