Доступ к тексту кнопки Xcode осуществляется, но пользовательский интерфейс изменения фона не отображается - PullRequest
3 голосов
/ 13 июля 2020

Я создал специальную кнопку, как показано ниже. Я могу получить доступ к текстовому значению при нажатии, но когда я изменяю значение фона, в пользовательском интерфейсе не происходит никаких изменений. Кто-нибудь знает почему?

class MyButton: UIButton {
            
    override func layoutSubviews() {
        super.layoutSubviews()
        
        layer.cornerRadius = 8
        titleLabel?.adjustsFontSizeToFitWidth = true
        contentHorizontalAlignment = .center
        
        titleLabel?.textColor = .white
        backgroundColor = .black
        
        addGestureRecognizer(UITapGestureRecognizer(target: self, action:  #selector (self.someAction (_:))))
                               
    }
    
    @objc func someAction(_ sender:UITapGestureRecognizer) {
        print(titleLabel!.text) // text accessible and printed

        titleLabel?.textColor = .black //no change
        backgroundColor = .white //no change
    }
}

1 Ответ

2 голосов
/ 13 июля 2020

Пожалуйста, удалите эти две строки из layoutSubviews

        titleLabel?.textColor = .white
        backgroundColor = .black

Добавьте это вот так

override init(frame: CGRect) {
        super.init(frame: frame)
        commonInit()
    }
    
    required init?(coder: NSCoder) {
        super.init(coder: coder)
        commonInit()
    }
    func  commonInit() {
        layer.cornerRadius = 8
        titleLabel?.adjustsFontSizeToFitWidth = true
        contentHorizontalAlignment = .center
        
        titleLabel?.textColor = .white
        backgroundColor = .black
        
        addGestureRecognizer(UITapGestureRecognizer(target: self, action:  #selector (self.someAction (_:))))
    }
...