在項目中會需要改View的圓角、邊框、陰影等屬性值。一般我們可以用代碼來更改屬性,或者在View的XIB中通過keyPath的方式改變value的值。但是這些方法都不能很方便的直接設置值并直觀的在xib上觀察這些值的引起的View變化。IBInspectable
和IB_DESIGNABLE
很好的解決了這方面的問題
先說說IBInspectable:
以給一個View加圓角來舉例。
新建一個xxView
繼承自UIView
,給xxView
添加一個屬性,并加上IBInspectable
修飾
@property (nonatomic,assign) IBInspectable CGFloat cornerRadius;
打開XIB/StoryBoard
在上面拖一個view,設置class
為xxView
01
點擊屬性指示器,可以看到xxView
在XIB上多了一個屬性cornerRadius
02
但是這樣運行肯定死不能達到更改view的圓角的效果的,所以這兒還需要修改
xxView
的cornerRadius
的setter
方法
-(void)setCornerRadius:(CGFloat)cornerRadius
{
_cornerRadius = cornerRadius;
self.layer.cornerRadius = cornerRadius;
}
在xib上修改cornerRadius
為50,然后運行,得到了圓角效果:
再看一下身份指示器發現:xxview
keypath多了一個,所以IBInspectable
也是通過keypath實現更改屬性的。
好了IBInspectable介紹完了。再來看下IB_DESIGNABLE
給
xxView
加上 IB_DESIGNABLE
IB_DESIGNABLE
@interface xxView : UIView
@property (nonatomic,assign) IBInspectable CGFloat cornerRadius;
@end
然后再看一下xib文件發現在xib上我們可以直接通過更改屬性來預覽view的變化了。是不是很爽~