Это потому, что вы делаете все внутри layoutSubviews
, что само по себе является очень плохой практикой.
В вашем случае вы создаете экземпляр CustomHeaderView
и вызывается схема для этого, следовательно, вызывается layoutSubviews
Следующим шагом будет добавление textView
к вашему CustomHeaderView
, после чего вызывается текстовое представление layoutSubviews
, которое переопределит ваш цвет.
Вы можете решить это двумя способами, я считаю. Хотя я не работаю с перьями и раскадровками,
во-первых:
class MyCustomHeaderView: UIView{
@IBOutlet weak var titleTextView: TitleTextView!
override init(frame: CGRect) {
super.init(frame: frame)
setup()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
setup()
}
func setup() {
backgroundColor = .brand100
titleTextView.text = "Market Place"
titleTextView.textColor = .brand400
layoutIfNeeded()
}
}
Во-вторых, это большое возможно:
class MyCustomHeaderView: UIView{
@IBOutlet weak var titleTextView: TitleTextView!
override init(frame: CGRect) {
super.init(frame: frame)
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
override func layoutSubviews() {
defer {
backgroundColor = .brand100
titleTextView.text = "Market Place"
titleTextView.textColor = .brand400
layoutIfNeeded()
}
}
}
Отсрочка будет ждать, пока все инициализируется перед запуском того, что находится в блоке. Я не знаю, как это работает с layoutSubviews