Настройка пространства внутри определенных элементов в stackview

#ios #swift

#iOS #swift

Вопрос:

По сути, я пытаюсь создать UIStackView с некоторыми элементами, которые имеют верхние поля и нижние поля. Например

 | item one |  
| item two |  
|          |  
| itemfour | 
 

Я попытался добавить пробел :

 let textField1 = UITextField(text: "one")
let textField2 = UITextField(text: "two")
let textField3 = UITextField(text: "four")
let spacerView = UIView(frame: CGRect(x: 10, y: 10, width: 100, height: 100))

viewStack.addSubView(textField1)
viewStack.addSubView(textField2)
viewStack.addSubView(spacerView)
viewStack.addSubView(textField3)
 

Однако высота, которую я устанавливаю для spacerView, похоже, не влияет на пространство, которое создается в представлении стека.

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

Ответ №1:

Вы могли бы:

  1. Создайте разделительный вид UILabel с text одним пробелом ( " " ). Это даст вам пустую строку той же высоты, что и остальной текст. Это будет работать, если для распределения установлено значение fillEqually (оно работает и в других режимах, но я упоминаю об этом, потому distribution что имеет значение в варианте № 2 ниже).

или,

  1. Создайте подкласс UIView и переопределите его intrinsicContentSize , возвращая CGSize значение, указывающее нужную высоту. Не устанавливайте это представление frame (т. Е. Позвольте UIStackView управлять фреймом представления). Обратите внимание, что этот метод работает только в том случае, если для распределения UIStackView не установлено значение fillEqually .