swift4.0中UIView的frame的扩展封装

来源:互联网 发布:免费网络推广渠道 编辑:程序博客网 时间:2024/06/05 09:26

扩展就是向一个已有的类、结构体或枚举类型添加新功能(functionality)。这包括在没有权限获取原始源代码的情况下扩展类型的能力(即逆向建模)。扩展和
Objective-C 中的分类(categories)类似。(不过与Objective-C不同的是,Swift 的扩展没有名字。)

Swift 中的扩展可以:

  • 添加计算型属性和计算静态属性
  • 定义实例方法和类型方法
  • 定义下标
  • 定义和使用新的嵌套类型
  • 使一个已有类型符合某个协议

*注意:
如果你定义了一个扩展向一个已有类型添加新功能,那么这个新功能对该类型的所有已有实例中都是可用的,即使它们是在你的这个扩展的前面定义的。*

//UIView的扩展import UIKitextension UIView{    //x position    var x : CGFloat{        get {            return frame.origin.x        }        set(newVal){            var tempFrame : CGRect = frame            tempFrame.origin.x     = newVal            frame                  = tempFrame        }    }    //y position    var y : CGFloat{        get {            return frame.origin.y        }        set(newVal){            var tempFrame : CGRect = frame            tempFrame.origin.y     = newVal            frame                  = tempFrame        }    }    //height    var height : CGFloat{        get {            return frame.size.height        }        set(newVal){            var tmpFrame : CGRect = frame            tmpFrame.size.height  = newVal            frame                 = tmpFrame        }    }    // width    var width : CGFloat {        get {            return frame.size.width        }        set(newVal) {            var tmpFrame : CGRect = frame            tmpFrame.size.width   = newVal            frame                 = tmpFrame        }    }    // left    var left : CGFloat {        get {            return x        }        set(newVal) {            x = newVal        }    }    // right    var right : CGFloat {        get {            return x + width        }        set(newVal) {            x = newVal - width        }    }    // top    var top : CGFloat {        get {            return y        }        set(newVal) {            y = newVal        }    }    // bottom    var bottom : CGFloat {        get {            return y + height        }        set(newVal) {            y = newVal - height        }    }    //centerX    var centerX : CGFloat {        get {            return center.x        }        set(newVal) {            center = CGPoint(x: newVal, y: center.y)        }    }    //centerY    var centerY : CGFloat {        get {            return center.y        }        set(newVal) {            center = CGPoint(x: center.x, y: newVal)        }    }    //middleX    var middleX : CGFloat {        get {            return width / 2        }    }    //middleY    var middleY : CGFloat {        get {            return height / 2        }    }    //middlePoint    var middlePoint : CGPoint {        get {            return CGPoint(x: middleX, y: middleY)        }    }}
原创粉丝点击