Это моя установка: у меня есть UIScrollView
ведущая, верхняя, пробная кромка, установленная на 0. Внутри нее я добавляю UIStackView
следующие ограничения:
stackView.centerYAnchor.constraintEqualToAnchor(selectedContactsScrollView.centerYAnchor).active = true
stackView.leadingAnchor.constraintEqualToAnchor(selectedContactsScrollView.leadingAnchor).active = true
Внутри представления стека я добавляю несколько представлений.
Моя проблема в том, что из-за ограничений первое представление, добавленное в представление стека, также будет иметь передний край = 0.
Как я могу добавить отступ к первому представлению? Без настройки ограничений просмотра прокрутки.
ios
swift
uiscrollview
uistackview
Адриан
источник
источник
Ответы:
Предоставленное вами решение не добавляет отступ для ваших представлений внутри вашего UIStackView (как вы хотели в вопросе), но оно добавляет ведущее значение для UIStackView.
Решением может быть добавление еще одного UIStackView в исходный UIStackView и переход к новому UIStackVIew. Затем добавьте свои представления в этот новый UIStackView.
Подсказка, вы можете сделать это полностью с помощью Interface Builder. Другими словами, для этого не нужно писать код.
источник
Когда
isLayoutMarginsRelativeArrangement
свойство имеет значение true, представление стека будет располагать свои упорядоченные представления относительно полей макета.Но это влияет на все упорядоченные представления внутри представления стека. Если вы хотите, чтобы этот отступ только для одного упорядоченного представления, вам нужно использовать вложенные
UIStackView
источник
isLayoutMarginsRelativeArrangement
это геттер, сеттерlayoutMarginsRelativeArrangement
. Я не могу отредактировать ответlayoutMarginsRelativeArrangement
вместо него. Официальная документация: developer.apple.com/reference/uikit/uistackview/…stackView.layoutMargins = UIEdgeInsetsMake(0, 20, 0, 20); [stackView setLayoutMarginsRelativeArrangement:YES];
Я обнаружил, что ограничения не работают в представлении стека или кажутся несколько странными.
(Например, если я добавляю ведущее / конечное ограничение к выбранному в представлении стека изображений, которое также добавляет ведущее к представлению коллекции, но не добавляет конечного; и это наверняка будет конфликтом).
Чтобы установить поля макета для всех видов в стеке, выберите:
Stack View > Size Inspector > Layout Margins > Fixed
Примечание:
"Fixed"
опция раньше вызывалась"Explicit"
, как видно на скриншотах.Затем добавьте отступ:
источник
Что сработало для меня, так это добавить в представление стека еще один UIView, который просто разделитель (работает по крайней мере с stackView.distribution = .Fill):
источник
swift 3: вам просто нужно установить смещение:
Убедитесь, что это ограничение установлено после того, как вы
parentView.addArrangdSubView(firstView)
источник
Если вам нужно только начальное заполнение, то вы можете установить для параметра «Выравнивание» представления стека значение «Конечный», и тогда вы сможете указать уникальные ограничения начального уровня для каждого из содержащихся в нем подвидов.
В качестве бонуса вы также можете установить выравнивание представления стека на «Центр», а затем вы можете использовать ограничения Leading и / или Trailing, чтобы дать каждому элементу собственное заполнение с обеих сторон.
источник
На этот вопрос уже есть хорошие ответы. Одно предложение: используйте
spacing
свойство, чтобы установить интервал между представлениями. Для первого и последнего представлений может быть два варианта: либо установить вставки, как предлагается @tolpp, либо добавить ограничение, прикрепляемое к родительскому (stackview) с константой, чтобы добавить отступ.источник
Решением было бы иметь обычное представление в представлении стека для хранения любых представлений, к которым вы хотите добавить ограничения, а затем вы можете добавить ограничения для своих элементов, которые относятся к представлениям в представлении стека. Таким образом, ваши исходные представления могут иметь начальные и конечные ограничения в представлении стека.
Это можно сделать в построителе интерфейсов и программно.
источник
Что мы сделали, так это добавили прозрачные компоненты (например, UIButton / UIView) в качестве первого и последнего потомков UIStackView. Затем установите ограничение ширины этих невидимых дочерних элементов, чтобы настроить отступы.
источник
Кажется, решение было довольно простым. Вместо того:
Я просто написал:
источник