在OC和Swift中使用IBDesignable/IBInspectable
iOS8新特性IBDesignable/IBInspectable,可以直接在XIB或者Storyboard中直接,设置UI类的属性。 以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 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是一样的,如果有疑问和建议,欢迎指导和提问。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |