先上效果

自定義button實(shí)時渲染
操作:
- 1 引入YCButton.h,.m文件 或 自定義
- 2 拖個button到面板,將controller改成YCButton,
- 3 之后在屬性面板便可以看到自定義屬性,默認(rèn)邊框效果是關(guān)閉的,此時其他自定義屬性即使設(shè)置了也不會起作用,必須先開啟邊框,邊框?qū)挾饶J(rèn)是1,顏色lightgray
- 4 圓角效果默認(rèn)關(guān)閉,開啟后默認(rèn)圓角值是10,改變屬性會實(shí)時顯示效果,其他button屬性都可以設(shè)置
自定義屬性:
Board Enable: 是否開啟邊框, 默認(rèn)關(guān)閉 (必須開啟其他屬性才能生效)
Board Color: 邊框顏色, 默認(rèn)淺灰色
Board With: 邊框?qū)挾龋? 默認(rèn)為1
Masks To Bounds: 是否開啟圓角, 默認(rèn)關(guān)閉 (必須開啟,圓角值才能生效)
Corner Radius: 圓角值, 默認(rèn)為10
實(shí)現(xiàn)原理:
IB_DESIGNABLE
在定義類的前面加上IB_DESIGNABLE宏,確保該控件在xib或storyboard上可以實(shí)時渲染
IBInspectable
在定義類的屬性前面加上IB_DESIGNABLE宏,確保該屬性在xib或storyboard上可以展示
代碼:YCButtonDemo
教程:如何設(shè)計(jì)一個 iOS 控件?(iOS 控件完全解析)
我做的改變:
如果只是單純的要屬性值和實(shí)時渲染,直接覆寫setter方法便可以;為了控件初始化后具有默認(rèn)效果,我重寫了- (void)drawRect:(CGRect)rect 方法,該方法在uitbutton中會在屬性的set方法執(zhí)行完后再執(zhí)行,也就是說,我在所有屬性拿到值后做了自己的處理邏輯。