Я хочу изменить цвет фона моего пользовательского UIView
.Я пишу код цвета фона внутри функции init
, но ничего не происходит.Я думаю, это потому, что UIView's
рамка не была установлена, когда я объявляю цвет фона.Однако я не знаю, как я могу решить эту проблему.
Мой код пользовательского класса
class WelcomeScreenButtonView: UIView {
private lazy var label = UILabel()
private lazy var logoImage = UIImageView()
override init(frame: CGRect) {
super.init(frame: frame)
translatesAutoresizingMaskIntoConstraints = false
setupUI()
setupConstraints()
}
public convenience init(text: String, imageName: String){
self.init()
self.label.text = text
self.logoImage.image = UIImage(named: imageName)?.withRenderingMode(.alwaysTemplate)
}
required public init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func setupConstraints(){
logoImage.anchor(self.topAnchor, left: self.leftAnchor, bottom: nil, right: self.rightAnchor, topConstant: 0, leftConstant: 0, bottomConstant: 0, rightConstant: 0, widthConstant: 0, heightConstant: 0)
label.anchor(self.logoImage.bottomAnchor, left: self.leftAnchor, bottom: nil, right: self.rightAnchor, topConstant: 10, leftConstant: 0, bottomConstant: 0, rightConstant: 0, widthConstant: 0, heightConstant: 0)
}
func setupUI(){
layer.cornerRadius = 6.0
logoImage.contentMode = .scaleAspectFit
logoImage.translatesAutoresizingMaskIntoConstraints = false
logoImage.tintColor = UIColor.white
label.translatesAutoresizingMaskIntoConstraints = false
label.textAlignment = .center
label.numberOfLines = 2
label.lineBreakMode = .byWordWrapping
label.textColor = UIColor.white
label.font = GeneralFont.lightFont.withSize(13)
addSubview(label)
addSubview(logoImage)
backgroundColor = UIColor.blue
}
}
Я также пытался сделать это там, где я объявляю это пользовательское представление
let myCustomView = WelcomeScreenButtonView()
myCustomView.backgroundColor = UIColor.blue
Но ничего не произошло.Кстати, я помещаю это представление внутрь UIStackView
.
РЕДАКТИРОВАТЬ: Как ваши ответы, я думаю, у меня есть проблема, где я объявляю это.
override func viewDidLoad() {
let incidentView = WelcomeScreenButtonView(text: "Hasar\nAnında", imageName: "hasar")
stackView.axis = UILayoutConstraintAxis.horizontal
stackView.distribution = UIStackViewDistribution.fillProportionally
stackView.alignment = UIStackViewAlignment.bottom
stackView.spacing = 0.0
stackView.addArrangedSubview(incidentView)
stackView.translatesAutoresizingMaskIntoConstraints = false
stackView.anchor(nil, left: self.view.leftAnchor, bottom: self.view.bottomAnchor, right: self.view.rightAnchor, topConstant: 0, leftConstant: 0, bottomConstant: 90, rightConstant: 0, widthConstant: 0, heightConstant: 90)
}
PS: я проверил много сообщений об этой проблеме, но большинство из них предназначены для представлений Xib и target-c.Поэтому я хотел задать новый вопрос.
Проверенные мной сообщения;
установка собственной настройки цвета фона UIView
Настройка фонацвет подкласса UIView не работает