iOS基础

swift分类和扩展的使用

2020-07-19  本文已影响0人  鹏飞说

其实在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
        
    }
}
上一篇下一篇

猜你喜欢

热点阅读