Как установить цвет фона UIView внутри UIStackView? - PullRequest
0 голосов
/ 20 января 2019

Я делаю экран сведений, который имеет несколько вложенных представлений в контроллере вида раскадровки: ScrollView> UIView> StackView> 5 представлений пользовательского интерфейса.Каждый вид пользовательского интерфейса представляет собой отдельный раздел, который содержит метки и тексты для редактирования.

Когда я устанавливаю фон одного из UIViews в раскадровке, он меняется, но не отражает это изменение при запуске эмулятора или на iPad.

Ниже приведена картинка с эмуляторомвид слева и раскадровка в Xcode справа.Вы можете видеть, что эмулятор не отображает цвет фона во вложенном UIView, в то время как раскадровка.,Трудно увидеть, но это контроллер представления вкладок, подключенный к трем контроллерам разделения представлений.

Полная раскадровка

При тестировании только с конкретными представлениями я сузил егок UIStackView, содержащему 5 UIViews, которые вызывают проблему.Я попытался подключить контроллер и изменить цвет в коде, но ничего из того, что я пробовал, похоже, не меняет его.

class ClientDetailViewController: UIViewController {

@IBOutlet weak var basicInfoUIView: UIView!

override func viewDidLoad() {
    super.viewDidLoad()

    basicInfoUIView.backgroundColor = UIColor.init(displayP3Red: 22, green: 22, blue: 22, alpha: 0.5)
    }
}

Я ожидаю, что для каждого раздела (UIView) будет темно-серый цвет, но вместо этого онивсе ясно, поэтому можно видеть цвет фона прокрутки.

Ответы [ 3 ]

0 голосов
/ 20 января 2019

Ну, пожалуйста, проверьте ваш цвет.22 не должно принадлежать [0,1].

basicInfoUIView.backgroundColor = UIColor.init(displayP3Red: 22.0 / 255.0, green: 22.0 / 255.0, blue: 22.0 / 255.0, alpha: 0.5)
0 голосов
/ 20 января 2019

UIStackView не позволяет изменять цвет фона:

UIStackView - это не рендеринг подкласса UIView;то есть он не предоставляет никакого собственного пользовательского интерфейса.Вместо этого он просто управляет положением и размером своих упорядоченных видов.В результате некоторые свойства (например, backgroundColor) не влияют на представление стека.Аналогично, вы не можете переопределить layerClass, draw ( :) или draw (: in:).

(из UIStackView )

Простой обходной путь - добавить еще один UIView позади стекового представления, установить ограничения, чтобы соответствовать положению и размеру стекового представления (равных сверху, слева, справа, снизу) и изменить цвет фона этого представления.

0 голосов
/ 20 января 2019

enter image description here Я думаю, что сначала вы должны задать различные цвета фона для ваших представлений пользовательского интерфейса, а затем разместить их.Под одним стеком и проверьте, работает ли он или нет

Я добавил скриншот, где я сначала дал цвета фона для UIviews, а затем поместил их в один stackView, но у них были эти цвета в отличие от вас после предоставления им цвета фонапросто из элементов под контроллером слева выберите Uiviews и поместите их в стек. View

...