其实在swift中严格的说是没有分类的一说的,swift建议我们使用扩展功能实现一些系统控件的扩展
但是在实际的开发中,如果我们使用的是xib的话,还是使用分类能好点,我们直接继承就好了!
接下来就说下继承的方法实现:
下方的例子是一个UILable的继承,使用渐变的方法
class gradLabel: UILabel {
override func awakeFromNib() {
super.awakeFromNib()
let topColor = UIColor(red: 248/255, green: 66/255, blue: 109/255, alpha: 1)
let buttomColor = UIColor(red: 244/255, green: 74/255, blue: 150/255, alpha: 1)
let gradientColors = [topColor.cgColor, buttomColor.cgColor]
//定义每种颜色所在的位置
let gradientLocations:[NSNumber] = [0.0, 1.0]
//创建CAGradientLayer对象并设置参数
let gradientLayer = CAGradientLayer()
gradientLayer.startPoint = CGPoint(x: 0, y: 0.5)
gradientLayer.endPoint = CGPoint(x: 1.0, y: 0.5)
gradientLayer.colors = gradientColors
gradientLayer.locations = gradientLocations
gradientLayer.frame = self.bounds
self.layer.insertSublayer(gradientLayer, at: 0)
}
}
使用这个方法最简单的方法就是,我们再使用xib或者sb的时候创建的控件直接继承就好了,会很方便的!如果你使用xib的话可以使用这个方法
下方的例子是一个UILabel的扩展
extension UILabel {
convenience init(title:String,frame:CGRect,font:CGFloat,textColor:UIColor,textAlignment:NSTextAlignment) {
self.init(frame:frame)
self.text = title
self.numberOfLines = 0
self.textAlignment = textAlignment
self.frame = frame
self.font = UIFont.systemFont(ofSize: font)
self.textColor = textColor
}
}
网友评论