美文网首页iOS基础
swift分类和扩展的使用

swift分类和扩展的使用

作者: 鹏飞说 | 来源:发表于2020-07-19 17:49 被阅读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
            
        }
    }
    

    相关文章

      网友评论

        本文标题:swift分类和扩展的使用

        本文链接:https://www.haomeiwen.com/subject/ptdrkktx.html