Пользовательский подкласс UIButton - PullRequest
0 голосов
/ 11 октября 2018

Я пробую свой собственный UIButton.Я переклассифицировал класс UIButton и попытался добавить некоторые функции, это мой код:

import UIKit


class CustomButton: UIButton {

    override init(frame: CGRect) {
        super.init(frame: frame)
        setup()
        setGradientBackground()
    }

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

    private func setup() {
        layer.cornerRadius = 8
    }

    private func setGradientBackground() {

        let gradientLayer = CAGradientLayer()
        gradientLayer.frame = bounds
        gradientLayer.colors = [UIColor.yellow.cgColor, UIColor.blue.cgColor]
        gradientLayer.locations = [0.0, 1.0]
        gradientLayer.startPoint = CGPoint(x: 1.0, y: 1.0)
        gradientLayer.endPoint = CGPoint(x: 0.0, y: 0.0)

        layer.insertSublayer(gradientLayer, at: 0)
    }
}

Я связал его с моим IBOutlet:

@IBOutlet weak var myButton: CustomButton!

И ничего не применимо!

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

Использование func awakeFromNib():

class CustomButton: UIButton {

    override func awakeFromNib() {
        super.awakeFromNib()

        setup()
        setGradientBackground()
    }

    private func setup() {
        layer.cornerRadius = 8
    }

    private func setGradientBackground() {

        let gradientLayer = CAGradientLayer()
        gradientLayer.frame = bounds
        gradientLayer.colors = [UIColor.yellow.cgColor, UIColor.blue.cgColor]
        gradientLayer.locations = [0.0, 1.0]
        gradientLayer.startPoint = CGPoint(x: 1.0, y: 1.0)
        gradientLayer.endPoint = CGPoint(x: 0.0, y: 0.0)

        layer.insertSublayer(gradientLayer, at: 0)
    }
}
0 голосов
/ 11 октября 2018

Если вы добавляете кнопку в раскадровку, то вызывается инициализатор init?(coder aDecoder: NSCoder), а не init(frame: CGRect), поэтому вам нужно добавить…

required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
    setup()
    setGradientBackground()
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...