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) } }}
阅读全文
0 0
- swift4.0中UIView的frame的扩展封装
- UITextView的PlaceholderTextView封装Swift4.0
- UIView中bounds和frame的差别
- UIView.frame的骗局
- Swift4.0中setValuesForKeys()不起作用的问题
- UIView的frame与bounds
- UIView的frame与bounds
- UIView的frame和bounds
- UIView的frame与bounds
- iphone UIView中bounds和frame的差别?
- UIView中frame, bounds, center三个属性的关系
- ios 中UIView bounds 和 frame 属性的区别
- swift中UIView的扩展使用
- Swift4.0 函数的定义
- 封装frame的修改
- UIView封装的动画
- 正确的设置UIView的frame
- UIView frame与bounds的区别
- C#源码刷新网页 最小化托盘http get和post请求配置保存版权时间限制定时调用 单实例运行,如果已经运行则激活窗口到最前显示
- UDP使用connect系统调用
- SDK之动态链接库开发—基本概念
- 关于Tomcat启动项目时,控制台抛出各种异常,误以为项目错误
- Tomcat优化参数
- swift4.0中UIView的frame的扩展封装
- HTTP协商缓存实践
- mysql使用in函数的一个小问题
- postman使用注意事项
- CentOS系统下docker的安装配置及使用详解
- MySQL中的存储引擎讲解(InnoDB,MyISAM,Memory等各存储引擎对比)
- 【单片机笔记】keil c51编译环境不能跳转函数的解决办法
- datepicker日期插件位置出现错误
- Neutron 理解(14):Neutron ML2 + Linux bridge + VxLAN 组网