Я попытался изменить UIStackView
фон с прозрачного на белый в Инспекторе раскадровок, но при моделировании цвет фона стекового представления по-прежнему имеет чистый цвет.
Как я могу изменить цвет фона UIStackView
?
ios
swift
uistackview
LukasTong
источник
источник
Ответы:
Ссылка ЗДЕСЬ .
РЕДАКТИРОВАТЬ:
Вы можете добавить подпредставление,
UIStackView
как упомянуто ЗДЕСЬ или в этом ответе (ниже), и назначить ему цвет. Проверьте нижеextension
для этого:И вы можете использовать его как:
источник
drawRect()
называется. Вы можете просто проверить, используя подклассыUIStackView
if let backgroundView = self.subviews.first(where: {$0.tag == 123}) {
. Если так, я изменяю цвет фона этого представления.Я делаю это так:
Работает как шарм
источник
@IBDesignable class StackView
который позволит вам создавать на доске истории. Меня не волнует добавление фона во время выполнения, но очень сложно спроектировать вид стека, когда на раскадровке нет цветаUIStackView
это элемент без рендеринга, и поэтому он не отображается на экране. Это означает, что изменение поbackgroundColor
сути ничего не делает. Если вы хотите изменить цвет фона, просто добавьтеUIView
к нему как подпредставление (которое не организовано), как показано ниже:источник
Возможно, самый простой, более читаемый и менее хакерский способ - встроить
UIStackView
объект вUIView
и установить цвет фона для представления.И не забудьте правильно настроить ограничения Auto Layout между этими двумя представлениями… ;-)
источник
Pitiphong верен, чтобы получить вид стека с цветом фона, сделайте что-то вроде следующего ...
Это даст вам представление стека, содержимое которого будет размещено на красном фоне.
Чтобы добавить отступы в представление стека, чтобы содержимое не совпадало с краями, добавьте следующее в код или раскадровку ...
источник
TL; DR: Официальный способ сделать это - добавить пустое представление в представление стека с помощью
addSubview:
метода и установить вместо него добавленный фон представления.Объяснение: UIStackView - это специальный подкласс UIView, который только делает макет, а не рисует. Многие из его свойств не будут работать как обычно. А поскольку UIStackView будет размещать только упорядоченные подпредставления, это означает, что вы можете просто добавить к нему UIView с
addSubview:
методом, установить его ограничения и цвет фона. Это официальный способ достичь того, чего вы хотите, цитируемого на сессии WWDCисточник
Это работает для меня в Swift 3 и iOS 10:
источник
В iOS10 ответ @ Arbitur требует setNeedsLayout после того, как цвет установлен. Это изменение, которое необходимо:
источник
backgroundColor
прежде чем добавить его кsuperview
он работает на ios10 и ios9, однако, если вы обновилиbackgroundColor
после егоlayoutSubviews()
функция была вызвана она просто Wouldnt обновляютbackgroundColor
изbackgroundLayer
не означает никакого визуального обновления. Исправлено сейчас, спасибо за указание на это.Вот краткий обзор для добавления стека цвета фона.
Создание фонового представления с закругленными углами
Чтобы сделать его фоновым, мы добавляем его в массив subviews представления корневого стека с индексом 0. Это ставит его позади упорядоченных представлений представления стека.
Добавьте ограничения, чтобы прикрепить backgroundView к краям стекового представления, используя небольшое расширение в UIView.
позвонить
pinBackground
изviewDidLoad
Ссылка от: ЗДЕСЬ
источник
Xamarin, C # версия:
источник
Вы могли бы сделать небольшое расширение
UIStackView
Использование:
источник
источник
Подкласс UIStackView
Тогда в вашем классе
источник
Вы можете вставить подслой в StackView, он мне подходит:
источник
Я немного скептически отношусь к компонентам UC. Вот как я это использую,
И это использование,
Примечание. При таком подходе, если вы хотите установить границу, вы должны установить
layoutMargins
на stackView так, чтобы граница была видимой.источник
Вы не можете добавить фон в стек просмотра. Но то, что вы можете сделать, это добавить представление стека в представление, а затем установить фон представления, и это сделает работу. * Это не будет прерывать потоки стека. Надеюсь, это поможет.
источник
У нас может быть собственный класс,
StackView
подобный этому:И это можно использовать так:
Это немного лучше, чем добавление функции расширения,
func addBackground(color: UIColor)
как предлагают другие. Фоновый вид ленив, так что он не будет создан, пока вы на самом деле не позвонитеstackView.backgroundView.backgroundColor = ...
. А установка / изменение цвета фона несколько раз не приведет к вставке нескольких подпредставлений в представление стека.источник
Если вы хотите управлять из самого дизайнера, добавьте это расширение в представление стека
источник
Вы можете сделать это так:
Предоставляя расширение для переопределения
backgroundColor
:источник
Попробуйте BoxView . Это похоже на UIStackView, но это рендеринг и поддерживает больше вариантов компоновки.
источник