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() {
}
}