Подкласс UIButton с дополнительной меткой - как центрировать - PullRequest
0 голосов
/ 20 мая 2019

Я хочу создать подкласс UIButton и добавить дополнительную метку под меткой заголовка. Ярлык должен быть точно по центру и на 10 пикселей ниже заголовка. Также следует обновить информацию о любом изменении размера в Интерфейсном компоновщике. Как я мог этого добиться. В настоящее время у меня есть:

@IBDesignable
class MyButton: UIButton {

    let additionalLabel = UILabel()
    @IBInspectable var additionalValue: String = "Test" {
        didSet {
            additionalLabel.text = additionalValue
        }
    }

    required init(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)!
        self.commonInit()
    }

    override init(frame: CGRect) {
        super.init(frame: frame)
        self.commonInit()
    }

    func commonInit(){
        updateView()
    }

    override func prepareForInterfaceBuilder() {
        super.prepareForInterfaceBuilder()
        updateView()
    }

    override func layoutSubviews() {
        super.layoutSubviews()

        // Set label size and position
        additionalLabel.frame.size = CGSize(width: frame.width, height: 30)
        additionalLabel.frame.origin = CGPoint(x: 0, y: 0)
        additionalLabel.center.x = self.center.x
        additionalLabel.center.y = self.center.y + 10
    }

    func updateView() {
        setTitle("abc", for: .normal)
        additionalLabel.text = additionalValue
        addSubview(additionalLabel)
    }

}

Но дополнительная метка отцентрирована не полностью и при изменении размера кнопки в IB не корректируется.

...