iOS 使用 Runtime Attribute 为 IB 控件添加不能直接设置的属性
2016-05-11 10:21
423 查看
Runtime Attribute 是一个不被看重但功能非常强大的特性,它可以帮助你编写更加轻量级的ViewController。
当你使用IB(Storyboard或者Xib)编辑视图的时候,有时可能会遇到诸如 圆角、边框、边框颜色、等等难以通过IB直接设置的属性。
这时你不得不借助代码实现。其实当出现这类情况时,我们其实可以借助Runtime Attribute在IB中实现。
如图所示,在IB中,点击任意一个控件切换到identity inspector
图1
在User Defined Runtime Attributes新增属性
在这里可以为控件设置值为
Boolean - BOOL
Number - NSNumber 对象 或者 枚举 或者 NSInteger 或者CGFloat
String - NSString *
Point - CGPoint
Size - CGSize
Range - NSRange
Color - UIColor *
等属性,但必须逐级调用
例如 layer.cornerRadius layer.masksToBounds 这里其实是 对象.layer.cornerRadius 的调用关系
同时,你甚至可以为它设置一个自定义的属性
比如你可以随意扩充一个名位 status 的属性表示开启状态,但前提是你必须为控件自定义一个实现了 runtime自动构建成员的引用。
如图1所示,这里有一个 layer.borderColorFromeUIColor,这实际上是我为了解决IB不能设置CGColor和为CALayer引入的一个属性。
如图2所示,我们在Swift中为CALayer 扩展一个属性
图2
使用的时候写成 layer.borderColorFromUIColo(标准的Set方法调用),这样IB也可以设置CGColor了
图3
新建IB文件如图3所示,Swift工程在任意文件中放入以下代码
extension CALayer{
func setBorderColorFromUIColor(color:UIColor){
self.borderColor = color.CGColor
}
}
编译运行,及实现了在IB中为控件设置 圆角,边框,边框颜色
1、在什么情况下使用
当你使用IB(Storyboard或者Xib)编辑视图的时候,有时可能会遇到诸如 圆角、边框、边框颜色、等等难以通过IB直接设置的属性。这时你不得不借助代码实现。其实当出现这类情况时,我们其实可以借助Runtime Attribute在IB中实现。
2、如何使用
如图所示,在IB中,点击任意一个控件切换到identity inspector图1
在User Defined Runtime Attributes新增属性
在这里可以为控件设置值为
Boolean - BOOL
Number - NSNumber 对象 或者 枚举 或者 NSInteger 或者CGFloat
String - NSString *
Point - CGPoint
Size - CGSize
Range - NSRange
Color - UIColor *
等属性,但必须逐级调用
例如 layer.cornerRadius layer.masksToBounds 这里其实是 对象.layer.cornerRadius 的调用关系
同时,你甚至可以为它设置一个自定义的属性
比如你可以随意扩充一个名位 status 的属性表示开启状态,但前提是你必须为控件自定义一个实现了 runtime自动构建成员的引用。
如图1所示,这里有一个 layer.borderColorFromeUIColor,这实际上是我为了解决IB不能设置CGColor和为CALayer引入的一个属性。
如图2所示,我们在Swift中为CALayer 扩展一个属性
图2
使用的时候写成 layer.borderColorFromUIColo(标准的Set方法调用),这样IB也可以设置CGColor了
3、DEMO
图3新建IB文件如图3所示,Swift工程在任意文件中放入以下代码
extension CALayer{
func setBorderColorFromUIColor(color:UIColor){
self.borderColor = color.CGColor
}
}
编译运行,及实现了在IB中为控件设置 圆角,边框,边框颜色
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- Apple Swift学习教程
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- 介绍 Fedora 上的 Swift
- Java Runtime Environment 5.0 Update 12 下载
- php set_magic_quotes_runtime() 函数过时解决方法
- Asp.Net 程序错误Runtime Error原因与解决
- 讲解iOS开发中基本的定位功能实现
- iOS中定位当前位置坐标及转换为火星坐标的方法
- js判断客户端是iOS还是Android等移动终端的方法
- iOS应用中UISearchDisplayController搜索效果的用法
- IOS开发环境windows化攻略
- iOS应用中UITableView左滑自定义选项及批量删除的实现
- 浅析iOS应用开发中线程间的通信与线程安全问题