Swift学习笔记(十):自定义便利构造器

377 阅读1分钟

swift 自定义便利构造器原则:

  • 可以在子类中创建,也可以在Extension中创建,在自定义的 init 方法前添加 convenience 关键字,同时要在内部调用 self.init() ,即一定要调用同级别的指定构造器
  • 如果在子类中创建便利构造器,还需要重写init方法,如果不重写会报错

UIBarButtonItem+Extension 的扩展中添加便利构造器

import UIKit

extension UIBarButtonItem {
    convenience init(image: String) {
        let letBtn = UIButton()
        letBtn.setBackgroundImage(UIImage(named:image), for: .normal)
        letBtn.setBackgroundImage(UIImage(named:image + "_highlighted"), for: .highlighted)
        letBtn.sizeToFit()
        self.init(customView: letBtn)
    }
}

复制代码

自定义UIView

import UIKit

class CircleProgressView: UIView {

    private var duration: Double = 0

    convenience init(frame: CGRect, duration: Double) {

        self.init(frame: frame)

        self.duration = duration

        setupView()

    }


    override init(frame: CGRect) {

        super.init(frame: frame)

    }


    required init?(coder: NSCoder) {

        fatalError("init(coder:) has not been implemented")

    }


    func setupView() {

    }

}