#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:
Вы могли бы:
- Создайте разделительный вид
UILabel
сtext
одним пробелом (" "
). Это даст вам пустую строку той же высоты, что и остальной текст. Это будет работать, если для распределения установлено значениеfillEqually
(оно работает и в других режимах, но я упоминаю об этом, потомуdistribution
что имеет значение в варианте № 2 ниже).
или,
- Создайте подкласс
UIView
и переопределите егоintrinsicContentSize
, возвращаяCGSize
значение, указывающее нужную высоту. Не устанавливайте это представлениеframe
(т. Е. ПозвольтеUIStackView
управлять фреймом представления). Обратите внимание, что этот метод работает только в том случае, если для распределенияUIStackView
не установлено значениеfillEqually
.