IBInspectable和IB_DESIGNABLE的使用

? ? ? ? 最近無意中知道了IBInspectable和IB_DESIGNABLE,感覺如果在項(xiàng)目中使用會(huì)給我們程序員帶來意想不到的的方便.試想下:在做應(yīng)用的UI設(shè)計(jì)的時(shí)候蝙泼,如果屬性能夠在Interface Builder的圖形化界面進(jìn)行設(shè)置,并且動(dòng)態(tài)的預(yù)覽到效果,那樣無疑會(huì)大大提高應(yīng)用的開發(fā)效率叮喳。而XCode為我們提供了這樣的一種方式,就是使用IBInspectable和IB_DESIGNABLE.(Xcode 6出現(xiàn)的這兩個(gè)屬性-->原理就是在xib里面設(shè)置完成之后幫我們添加一個(gè)runtime attributes,雖然我們也可以通過User Defined Rumtime Attributes可以在Interface Builder中淳附,設(shè)置一些KVC屬性的值,但是這樣做不容易調(diào)試和后期維護(hù)).

IBInspectable

讓支持KVC的屬性能夠在Attribute Inspector中配置帮辟。其修飾成員變量,其修飾的變量可以在xib右邊的控制面板里面直接更改其值

例如我想實(shí)現(xiàn)一個(gè)自定義的UItextField,通過xib設(shè)置它的一些屬性(圓角,邊線寬度,邊線顏色等),此時(shí)可以寫一個(gè)UIView的分類,在.h文件中聲明這三個(gè)屬性并用IBInspectable修飾.

@interface UIView (Inspectable)

/**

*? 可以在xib里面直接設(shè)置的:圓角

*/

@property (nonatomic, assign) IBInspectable CGFloat cornerRadius;

/**

*? 可以在xib里面直接設(shè)置的:邊線寬度

*/

@property (nonatomic, assign) IBInspectable CGFloat borderWidth;

/**

*? 可以在xib里面直接設(shè)置的:邊線顏色

*/

@property (nonatomic, assign) IBInspectable UIColor *borderColor;

在.m文件中

@implementation UIView (Inspectable)

- (void)setCornerRadius:(CGFloat)cornerRadius{

self.layer.cornerRadius = cornerRadius;

self.layer.masksToBounds = cornerRadius>0;

}

- (CGFloat)cornerRadius{

return self.layer.cornerRadius;

}

- (void)setBorderColor:(UIColor *)borderColor{

self.layer.borderColor = borderColor.CGColor;

}

- (UIColor *)borderColor{

return [UIColor colorWithCGColor:self.layer.borderColor];

}

- (void)setBorderWidth:(CGFloat)borderWidth{

self.layer.borderWidth = borderWidth;

}

- (CGFloat)borderWidth{

return self.layer.borderWidth;

}

@end

此時(shí)在storyboard中的Attribute Inspector就會(huì)多出三個(gè)配置選項(xiàng)(cornerRadius,borderColor,borderWidth)可以直接進(jìn)行設(shè)置,界面如下


每次設(shè)置這三個(gè)選項(xiàng)之后,都會(huì)在Identity Inspector中改變一個(gè)rumtime的KVC變量,不過現(xiàn)在仍然不能動(dòng)態(tài)的刷新

通過IB_DESIGNABLE配合IBInspectable可以實(shí)現(xiàn)動(dòng)態(tài)刷新

實(shí)現(xiàn)方式很簡單龄糊,就是在自定義類的頭文件處加上這個(gè)宏定義即可逆粹。然后把對應(yīng)的類設(shè)置為自定義的類。IB_DESIGNABLE修飾View,這個(gè)View是自定義的,其修飾的View可以直接在xib里面動(dòng)態(tài)渲染

但是切記不能修飾分類,比如上邊提到的UIView的分類,如果把IB_DESIGNABLE加載此分類中是毫無作用的.可以自定義一個(gè)類,繼承自UITextField,然后在此類中添加這個(gè)宏定義,然后不要忘了和xib中的UITextfield相關(guān)聯(lián),這個(gè)時(shí)候,你再設(shè)置上邊的三個(gè)配置選項(xiàng)就會(huì)發(fā)現(xiàn)能夠動(dòng)態(tài)刷新了.

如果不能動(dòng)態(tài)刷新炫惩,重啟XCode僻弹,如果還不能刷新,如下圖RefreshingAllViews他嚷,建議開啟Automatically Refresh Views


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蹋绽,一起剝皮案震驚了整個(gè)濱河市芭毙,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌卸耘,老刑警劉巖退敦,帶你破解...
    沈念sama閱讀 221,695評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異蚣抗,居然都是意外死亡苛聘,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評論 3 399
  • 文/潘曉璐 我一進(jìn)店門忠聚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來设哗,“玉大人,你說我怎么就攤上這事两蟀⊥遥” “怎么了?”我有些...
    開封第一講書人閱讀 168,130評論 0 360
  • 文/不壞的土叔 我叫張陵赂毯,是天一觀的道長战虏。 經(jīng)常有香客問我,道長党涕,這世上最難降的妖魔是什么烦感? 我笑而不...
    開封第一講書人閱讀 59,648評論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮膛堤,結(jié)果婚禮上手趣,老公的妹妹穿的比我還像新娘。我一直安慰自己肥荔,他們只是感情好绿渣,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,655評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著燕耿,像睡著了一般中符。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上誉帅,一...
    開封第一講書人閱讀 52,268評論 1 309
  • 那天淀散,我揣著相機(jī)與錄音,去河邊找鬼蚜锨。 笑死档插,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的踏志。 我是一名探鬼主播阀捅,決...
    沈念sama閱讀 40,835評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼针余!你這毒婦竟也來了饲鄙?” 一聲冷哼從身側(cè)響起凄诞,我...
    開封第一講書人閱讀 39,740評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎忍级,沒想到半個(gè)月后帆谍,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,286評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡轴咱,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,375評論 3 340
  • 正文 我和宋清朗相戀三年汛蝙,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片朴肺。...
    茶點(diǎn)故事閱讀 40,505評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡窖剑,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出戈稿,到底是詐尸還是另有隱情西土,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布鞍盗,位于F島的核電站需了,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏般甲。R本人自食惡果不足惜肋乍,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,873評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望敷存。 院中可真熱鬧墓造,春花似錦、人聲如沸历帚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,357評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽挽牢。三九已至,卻和暖如春摊求,著一層夾襖步出監(jiān)牢的瞬間禽拔,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,466評論 1 272
  • 我被黑心中介騙來泰國打工室叉, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留睹栖,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,921評論 3 376
  • 正文 我出身青樓茧痕,卻偏偏與公主長得像野来,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子踪旷,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,515評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 前言 在iOS開發(fā)過程中曼氛,我們經(jīng)常要根據(jù)項(xiàng)目需要自定義UI控件來完成一個(gè)特殊的功能(盡管UIkit框架已經(jīng)提供...
    拭目以待_閱讀 928評論 0 3
  • 在iOS中隨處都可以看到絢麗的動(dòng)畫效果豁辉,實(shí)現(xiàn)這些動(dòng)畫的過程并不復(fù)雜,今天將帶大家一窺iOS動(dòng)畫全貌舀患。在這里你可以看...
    F麥子閱讀 5,115評論 5 13
  • 在iOS中隨處都可以看到絢麗的動(dòng)畫效果徽级,實(shí)現(xiàn)這些動(dòng)畫的過程并不復(fù)雜,今天將帶大家一窺ios動(dòng)畫全貌聊浅。在這里你可以看...
    每天刷兩次牙閱讀 8,514評論 6 30
  • 在OC和Swift中使用IBDesignable/IBInspectable iOS8新特性IBDesignabl...
    潘柏信閱讀 2,501評論 3 5
  • 走過低匙,路過旷痕,看過,聽過顽冶,瘋過欺抗,鬧過,哭過渗稍,笑過佩迟,來過。
    崔崔小姐閱讀 197評論 0 0