Как правильно выровнять горизонтальный UIStackView?

Я еще не нашел ответа на этот вопрос в любом месте, и я не уверен, что это возможно, но я пытаюсь выровнять горизонталь UIStackView, Так что если подвиды скрыты, они перемещаются в правую сторону, а не в левую. Либо программно (в Swift), либо с помощью построителя интерфейса

3 ответов


UIStackViews выравнивание в соответствии с направлением текста пользователя, т. е. выравнивание по левому краю для английского и других языков Римской письменности или выравнивание по правому краю для таких языков, как иврит.

на мой взгляд, изменение этого по причинам макета может быть неправильным использованием API направления текста и немного взломать, но с учетом этого:

вы можете изменить направление для определенного вида в interface builder, используя семантический раскрывающийся список, который имеет опции для "Force Left-to-Right" и "Сила справа налево", которая изменит направление, в котором они появляются, но и порядок, в котором они показаны. Таким образом, вам придется изменить порядок элементов в вашем представлении стека

Semantic selector in IB

или вы можете сделать это в коде, используя представления semanticContentAttribute

stackView.semanticContentAttribute = .forceRightToLeft

у меня был горизонтально ориентированный UIStackView содержащий два UIViews; скрытие одного из видов привело к распространению другого на всю ширину. Добавление ограничения ширины к оставшемуся виду привело к сохранению желаемой ширины, но оно сдвинулось вправо.

TL; DR

добавить скрытый UIView к виду стека, который показывает, когда другой скрыт для интервала.


Что сработало лучше всего для меня, это поместить мой горизонтальный stackview внутри вертикального stackview и установить вертикальное выравнивание в leading