[IOS 开发] @IBDesignable @IBInspectable
2015-11-19 11:25
609 查看
iOS8新特性IBDesignable/IBInspectable,可以直接在XIB或者Storyboard中直接,设置UI类的属性。
例如:UIView.layer.borderWidth、borderColor、cornerRadius这些属性在XIB上是不能直接设置的,但是IBDesignable/IBInspectable,利用运行时机制,就可以把这些属性映射到XIB上了,同时我们UI类的自定义属性也可以映射上去。关于过多的解释我就不多说了可以看看Nate Cook撰写的。
然后在XIB或Storyboard里面,拖一个UIView上去,把class改成自己定义的View
然后点击旁边的属性编辑,就可以看到我们动态加载上去的属性,直接修改就可以了,XIB上的View也会跟随变化。
我们就可以看到一个UIView的子类变成了这样
注意:IBInspectable修饰的位置。
然后再.m文件里面,@implementation前面用IB_DESIGNABLE修饰。
然后再set方法里面去赋值就OK了,如下:
效果跟上面Swift是一样的,如果有疑问和建议,欢迎指导和提问。
例如:UIView.layer.borderWidth、borderColor、cornerRadius这些属性在XIB上是不能直接设置的,但是IBDesignable/IBInspectable,利用运行时机制,就可以把这些属性映射到XIB上了,同时我们UI类的自定义属性也可以映射上去。关于过多的解释我就不多说了可以看看Nate Cook撰写的。
以UIView的子类为例:
Swift IBDesignable/IBInspectable
首先我们得建一个ViewSwift类,View继承自UIView,选择Swift语言。@IBDesignable class View: UIView { @IBInspectable var cornerRadius: CGFloat = 0.0 { didSet { layer.cornerRadius = cornerRadius layer.masksToBounds = true } } @IBInspectable var borderColor: UIColor = UIColor() { didSet { layer.borderColor = borderColor.CGColor } } @IBInspectable var borderWidth: CGFloat = 0.0 { didSet { layer.borderWidth = borderWidth } } }
然后在XIB或Storyboard里面,拖一个UIView上去,把class改成自己定义的View
然后点击旁边的属性编辑,就可以看到我们动态加载上去的属性,直接修改就可以了,XIB上的View也会跟随变化。
我们就可以看到一个UIView的子类变成了这样
Objective-C IBDesignable/IBInspectable
建一个ViewOC类,ViewOC继承自UIView,选择Objective-C语言,在.h里面声明属性@property (nonatomic, assign)IBInspectable CGFloat cornerRadius; @property (nonatomic, assign)IBInspectable CGFloat bwidth; @property (nonatomic, assign)IBInspectable UIColor *bcolor;
注意:IBInspectable修饰的位置。
然后再.m文件里面,@implementation前面用IB_DESIGNABLE修饰。
IB_DESIGNABLE @implementation ViewOC
然后再set方法里面去赋值就OK了,如下:
- (void)setCornerRadius:(CGFloat)cornerRadius{ _cornerRadius = cornerRadius; self.layer.cornerRadius = _cornerRadius; self.layer.masksToBounds = YES; } - (void)setBcolor:(UIColor *)bcolor{ _bcolor = bcolor; self.layer.borderColor = _bcolor.CGColor; } - (void)setBwidth:(CGFloat)bwidth { _bwidth = bwidth; self.layer.borderWidth = _bwidth; }
效果跟上面Swift是一样的,如果有疑问和建议,欢迎指导和提问。
相关文章推荐
- ios开发笔记-7-bug解决
- iOS标准时间与时间戳相互转换
- iOS 9的 Core Image新滤镜
- iOS中几种数据持久化方案
- iOS中scrollsToTop小结
- iOS数据类型
- 好的文章收藏
- iOS 点击检测版本更新
- iOS 开发实用工具
- iOS中@class #import #include 简介
- iOS9适配 《AdaptationTips》
- Nagios+Cacti整合
- 14 款好用的 iOS 开发工具
- 友盟SDK应用(二)------url分享
- ios开发 xcode6以上安装Alcatraz管理插件
- iOS 保持界面流畅的技巧
- nagios 安装
- ios8.3以上把电脑照片导入到iPhone的方法且可以自由删除的方法
- 关于iOS后台执行
- IOS中通知中心(NSNotificationCenter)的使用总结