在OC和Swift中使用IBDesignable/IBInspectable
2016-01-13 14:05
435 查看
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是一样的,如果有疑问和建议,欢迎指导和提问。
相关文章推荐
- Swift附属脚本
- Swift方法
- swift 如何实现点击view后显示灰色背景
- Swift属性
- Swift类和结构体
- Swift基础--手势识别(双击、捏、旋转、拖动、划动、长按)
- Swift枚举详解
- Swift闭包详解
- Swift函数(函数声明、函数参数和类型)
- Swift流程控制
- Swift集合类型(数组和字典)
- Swift基本运算符详解
- Swift基础语法
- 《从零开始学Swift》学习笔记(Day 59)——代码排版
- iOS开发swift中tableView的条目点击的背景和文字颜色
- Swift之贪婪的UIButton
- Swift入门
- swift 枚举
- Swift中文教程(一)基础数据类型
- 在项目里交叉使用Swift和OC【转】