iOS 使用 Runtime Attribute 为 IB 控件添加不能直接设置的属性
来源:互联网 发布:ubuntu下安装samba 编辑:程序博客网 时间:2024/05/05 15:41
Runtime Attribute 是一个不被看重但功能非常强大的特性,它可以帮助你编写更加轻量级的ViewController。
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中为控件设置 圆角,边框,边框颜色
- iOS 使用 Runtime Attribute 为 IB 控件添加不能直接设置的属性
- iOS为类别添加属性的方法(RunTime)
- iOS Runtime 动态添加属性不能添加intrinsic类型
- 使用IB时设置textView属性崩溃
- iOS开发高级技巧-运行时属性runtime attribute设置视图圆角
- iOS:runtime的使用(动态添加方法、关联方法、交换方法、遍历私有属性)
- 为控件添加属性
- setContentView为什么不能直接获取控件的属性
- 为 android的系统控件添加属性
- 利用Runtime为Category添加属性
- 如何在使用VS2005的MFC编写ActiveX控件时,为控件添加属性、方法?
- ASP.NET(C#)中将TextBox控件的Readonly属性设置为True时后台直接取值取不到的解决方案
- Runtime的使用1 【 objc_setAssociatedObject 类添加属性】
- IOS通过runtime给category添加属性
- iOS (Category)runtime动态添加属性
- iOS 类别 ---不能添加属性
- jdom中使用setAttribute(Attribute attribute)方法设置属性的注意事项
- 为服务器控件添加属性
- 安卓中webview的使用方法介绍
- 如何让VMware低版本运行VMware高版本创建的虚拟机
- 文献笔记 You Only Look Once:Unified, Real-Time Object Detection
- javaoop--反射详解
- Ubuntu14.04搭建android源码编译环境
- iOS 使用 Runtime Attribute 为 IB 控件添加不能直接设置的属性
- 安卓开发 第七篇 我的安卓应用架构设计-----Adapter类及ViewHolder类
- Hibernate去重复查询
- 自动化UI测试
- RSA加密方式学习
- CDISC SDTM EC/EX domain 学习笔记 - 3
- Android AndroidManifest.xml文件的android:supportsRtl属性详解
- tomcat下CORS(跨域资源共享) 的配置
- 2016-5-11-1