Можно ли установить ограничения в подклассе UIButton? - PullRequest
0 голосов
/ 09 ноября 2018
class SpecialButton: UIButton {

    init() {
        super.init(frame: .zero)

    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
}

Я хочу создать собственный подкласс кнопок UIButton.Я хочу установить ограничения этой кнопки.В контроллере представления я могу использовать метод view.addSubview() и установить там button.topAnchor.constraint, но он не работает в этом подклассе.Как я могу подойти к этому?Или я пытаюсь подойти к нему неправильно?Я новичок в кодировании, пожалуйста, дайте мне знать.

Это код после того, как я поместил свойство super view в класс.Я думаю, что это работает и решит мою проблему.Есть ли лучшее решение, просто дайте мне знать.

    class SpecialButton: UIButton {

    let superView: UIView

    init(superView: UIView) {
        self.superView = superView
        super.init(frame: .zero)

        superView.addSubview(self)
        self.translatesAutoresizingMaskIntoConstraints = false
        self.topAnchor.constraint(equalTo: superView.topAnchor).isActive = true
    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
}

1 Ответ

0 голосов
/ 09 ноября 2018

Нельзя добавить ограничение, включающее верхний якорь кнопки, пока кнопка не станет частью иерархии представления, то есть до тех пор, пока у нее не будет суперпредставления. Кнопка знает, когда она была добавлена ​​в суперпредставление, потому что она получает didMoveToSuperview. Это самый ранний момент, когда вы можете ввести код ограничения.

...