便利构造方法的特点
- 通常都是写在extension里面
- init前面需要加上convenience
- 需要明确的调用self.init()
convenience:便利,使用convenience修饰的构造函数叫做便利构造函数
便利构造函数通常用在对系统的类进行构造函数的扩充时使用
例子(我们给UIButton书写一个便利构造函数)(完整的文件代码)
import UIKit
extension UIButton {
// 便利构造函数(自己书写一个构造函数)
convenience init(imageName : String , backgroundImageName : String) {
self.init()
setImage(UIImage(named: imageName), for: .normal)
setImage(UIImage(named: imageName + "_highlighted"), for: .highlighted)
setBackgroundImage(UIImage(named: backgroundImageName), for: .normal)
setBackgroundImage(UIImage(named: backgroundImageName + "_highlighted"), for: .highlighted)
sizeToFit()
}
}
外界调用(懒加载一个UIButton)
private lazy var composeBtn: UIButton = {
let tempButton = UIButton(imageName: "tabbar_compose_icon_add", backgroundImageName: "tabbar_compose_button")
return tempButton
}()
- UIButton(imageName: “tabbar_compose_icon_add”, backgroundImageName: “tabbar_compose_button”)这个就是调用了我们自己写的便利构造函数
注意
- 1.因为我们需要给UIButton书写一个便利构造函数,方便我们以后的使用,所以我们需要导入UIKit框架,因为只有这个框架里面才有UIButton控件
- 2.一定写在extension里面,因为我们是变相的给UIButton扩展
- 3.一定需要调用一下self.init()
- 4.方法和函数是一个意思