Я еще не нашел ответа для этого в любом месте, и я не уверен, если это возможно, но я пытаюсь правильно выровнять горизонтальный UIStackView
, так что если subviews скрыты, они перемещаются вправо не слева. Либо программно (в Swift), либо с помощью Interface Builder
Как вы выравниваете горизонтальный UIStackView?
Ответ 1
UIStackView
выровнять в соответствии с направлением текста пользователя, то есть выравнивать по левому краю для английского и других языков Roman script или выравниваться по правому краю для таких языков, как иврит.
По моему мнению, изменение этого варианта макета может быть неправильным использованием API-интерфейсов направления текста и немного взломать, но с учетом этого:
Вы можете изменить направление для определенного вида в построителе интерфейса, используя раскрывающийся список "Семантика", в котором есть опции "Сила слева направо" и "Сила справа налево", которая изменит направление, в котором они pop, а также порядок, в котором они отображаются. Таким образом, вам придется изменить порядок элементов в представлении стека
Или вы можете сделать это в коде, используя представление semanticContentAttribute
stackView.semanticContentAttribute = .forceRightToLeft
Ответ 2
У меня был горизонтально ориентированный UIStackView
содержащий два UIView
s; сокрытие одного вида привело к тому, что другое распространилось на всю ширину. Добавление ограничения ширины к оставшемуся виду привело к сохранению желаемой ширины, но она сместилась вправо.
TL; DR
Добавьте скрытый UIView
в представление стека, которое показывает, когда другой скрыт для пробелов.
Ответ 3
Для меня лучше всего было поместить мой горизонтальный вид в стеке в вертикальный вид в стеке и установить вертикальное выравнивание на ведущее
Ответ 4
В отличие от других ответов, решение на самом деле довольно простое. Вам нужно добавить конечное ограничение, которое прикрепляет представление стека к заднему краю его суперпредставления, а затем также добавить ведущее ограничение, которое прикрепляет его к переднему краю суперпредставления.
Однако хитрость заключается в том, чтобы изменить отношение ограничения ведущего стека с равного на большее или равное.
Это позволит переднему краю стекового представления привязаться к внутренней ширине содержимого стекового представления, эффективно закрепив все до заднего края.
Вертикальный вид стека похожи. Прикрепите верхнюю часть равными, а нижнюю - меньше или равными.
Так:
stackView.leadingAnchor.constraint(greaterThanOrEqualTo: parent.leadingAnchor).isActive = true
stackView.trailingAnchor.constraint(equalTo: parent.trailingAnchor).isActive = true
stackView.distribution = .equalSpacing