Расположение элементов управления в представлении стека в процентах в iOS Swift

Я создаю приложение для iOS с формой и использую stackviews. Это пример того, чего я хочу достичь: Пример просмотра стека

Текстовое поле и кнопка являются частью горизонтального представления стека. Что мне нужно, так это способ выделить им процентную ширину. Например, текстовое поле будет занимать 80% от общей ширины стека, а кнопка — 20%.

Свойство выравнивания и распределения Stackview установлено на «заполнение».

Я попытался добавить ограничение ширины к кнопке, но чувствую, что это неправильный способ сделать это, поскольку ширина будет отличаться для разных размеров экрана.


person Rujoota Shah    schedule 07.09.2016    source источник
comment
Чтобы уточнить, вы используете здесь горизонтальное представление стека для в основном статического макета, то есть вы всегда отображаете эти два элемента.   -  person David Berry    schedule 07.09.2016


Ответы (2)


Вы можете использовать свойство «Равная ширина» и назначить соответствующий множитель 0,80 и 0,20 для дочерних представлений.

Пожалуйста, проверьте следующие шаги:

1. Select textbox and Stackview and assign "Equal width" contraints to it.
2. Then select the contraints and edit it by applying multiplier of 0.80 to the textbox contraints.
3. Then select button and Stackview and assign "Equal Width" contraints to it.
4. Then select the contraints and edit it by applying multiplier of 0.20 to the button contraints.

В приведенном выше решении ширина будет распределяться в процентах для всех размеров экрана.

Для получения дополнительной информации перейдите на эту страницу: https://jascode.wordpress.com/2019/08/15/weight-assignment-in-stack-viewpercentage-wise-size-calculation/

person Jasmine John    schedule 15.08.2019

Вы ищете параметр UIStackViewDistributionFillProportionally.

Это будет использовать пропорцию между размерами внутреннего содержимого представления как пропорцию между их фактическими размерами. Таким образом, для 80% на 20% сделайте один вид шириной 80 и один вид шириной 20 (в их переопределениях intrinsicContentSize), и они будут изменены в пропорции 80-к-20.

person matt    schedule 07.09.2016
comment
Иногда это помогает, но не гарантирует фиксированную ширину. Если содержимое расширяется в текстовом поле, кнопка укорачивается. - person Rujoota Shah; 18.09.2016
comment
@RujootaShah Если это происходит, похоже, вы неправильно переопределяете внутренний размер содержимого. - person matt; 18.09.2016