.为了代码的方便性,在objective-C可以自定义返回值为id和instancetype类型的类方法,也叫+方法,而在swift中,我们可以定义便利构造器,关键字convenience.
.比如我们在给view设置自定义背景颜色或者给文字设置自定义字体颜色等时,UI给我们的颜色值往往是一些类似于"fc5912"或者"FC5912"的16进制的数字串,为了方便,我们就需要传相应的颜色值去得到UIColor对象,这时候便利构造器就派上用场了。示例代码如下:
extension UIColor {
convenience init(_ red: Int, _ green: Int, _ blue: Int, _ alpha: CGFloat = 1.0) {
assert(red >= 0 && red <= 255, "Invalid red component")
assert(green >= 0 && green <= 255, "Invalid green component")
assert(blue >= 0 && blue <= 255, "Invalid blue component")
self.init(red: CGFloat(red) / 255.0, green: CGFloat(green) / 255.0, blue: CGFloat(blue) / 255.0, alpha: alpha)
}
convenience init(_ hexValue:Int) {
self.init((hexValue >> 16) & 0xff, (hexValue >> 8) & 0xff, hexValue & 0xff)
}
}
//699F38 105 159 56
let titleColor = UIColor(105, 159, 56)
let backColor = UIColor(0x699f38)