IBInspectable和IB_DESIGNABLE-Storyboad動態(tài)刷新初探

前言

在做應用的UI設計的時候门烂,在xib或者SB開發(fā)中為我們提供了方便的可視化Interface Builder的圖形化界面進行設置宙枷,并且動態(tài)的預覽到效果钙畔,那樣無疑會大大提高應用的開發(fā)效率。UI元素的常用屬性在面板上基本都能看到仗岖,方便設置逃延。但是畢竟會有漏網之魚,比如最常用的UIImageView的圓角設置轧拄,就沒有直接的設置選項揽祥。最近在學習Storyboard使用技巧的時候了解了下IBInspectable和IB_DESIGNABLE,接下來就和大家分享一下檩电。

之前的做法

  • 在代碼處理
self.view.layer.cornerRadius = xxx;
self.view.layer.maskToBounds = YES;
  • 面板中設置一些KVC屬性的值


    屏幕快照 2017-05-09 下午11.34.44.png

    但是這樣還是不能在視圖中看到變化拄丰,不能實時刷新。

IB_DESIGNABLE

IB_DESIGNABLE的宏的功能就是讓XCode動態(tài)渲染出該類圖形化界面俐末。

  • 我這里的做法是繼承了UIView料按,在子類.h文件中引入宏定義
#import <UIKit/UIKit.h>
///引入宏定義
IB_DESIGNABLE
@interface TestView : UIView

@end
  • 然后在項目中所有的UIView都class都設置為繼承的子類。


    2.png
  • 最后再同之前一樣卓箫,在面板上設置圓角载矿,就發(fā)現可以動態(tài)刷新啦。


    3.gif

IB_DESIGNABLE和IBInspectable的配合使用

如果你覺得通過面板中的User Defined Rumtime Attributes來設置太麻煩了烹卒。那么你該考慮使用IBInspectable特性了闷盔。

  • 自定義一個圓角屬性
    ///自定的圓角屬性
    @property (nonatomic, assign) IBInspectable CGFloat myCorner;
  • 重寫set方法
- (void)setMyCorner:(CGFloat)myCorner {
    
    _myCorner = myCorner;
    self.layer.cornerRadius = _myCorner;
    self.layer.masksToBounds = YES;
}

然后你會驚奇的發(fā)現在面板上,多了一個myCorner屬性選項旅急,并且可以動態(tài)設置和刷新狀態(tài)逢勾,是不是很炫酷呢?

4.gif

如果不能動態(tài)刷新藐吮,重啟XCode溺拱,如果還不能刷新,請開啟Editor -> Automatically Refresh Views。

最后

  • IBInspectable當然不僅限于設置圓角炎码,你可與根據自己的需求來在面板上添加一些需要的屬性盟迟,并重寫set方法秋泳。不過個人建議潦闲,那些只會在初始化時設置一次,后期不會經常變化的邏輯可以這樣使用迫皱,不然的話反而顯得復雜化了歉闰。
  • 我這里用的是繼承的方法辖众,當然還可以用category來實現。
  • swift代碼示例在后期補上和敬。
  • 以上示例親測有效凹炸,還測了一些其他屬性,這里就不貼出來啦昼弟。
    by丟丟
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末啤它,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子舱痘,更是在濱河造成了極大的恐慌变骡,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,997評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件芭逝,死亡現場離奇詭異塌碌,居然都是意外死亡,警方通過查閱死者的電腦和手機旬盯,發(fā)現死者居然都...
    沈念sama閱讀 92,603評論 3 392
  • 文/潘曉璐 我一進店門台妆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人胖翰,你說我怎么就攤上這事接剩。” “怎么了萨咳?”我有些...
    開封第一講書人閱讀 163,359評論 0 353
  • 文/不壞的土叔 我叫張陵搂漠,是天一觀的道長。 經常有香客問我某弦,道長桐汤,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,309評論 1 292
  • 正文 為了忘掉前任靶壮,我火速辦了婚禮怔毛,結果婚禮上,老公的妹妹穿的比我還像新娘腾降。我一直安慰自己拣度,他們只是感情好,可當我...
    茶點故事閱讀 67,346評論 6 390
  • 文/花漫 我一把揭開白布螃壤。 她就那樣靜靜地躺著抗果,像睡著了一般。 火紅的嫁衣襯著肌膚如雪奸晴。 梳的紋絲不亂的頭發(fā)上冤馏,一...
    開封第一講書人閱讀 51,258評論 1 300
  • 那天,我揣著相機與錄音寄啼,去河邊找鬼逮光。 笑死代箭,一個胖子當著我的面吹牛,可吹牛的內容都是我干的涕刚。 我是一名探鬼主播嗡综,決...
    沈念sama閱讀 40,122評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼杜漠!你這毒婦竟也來了极景?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,970評論 0 275
  • 序言:老撾萬榮一對情侶失蹤驾茴,失蹤者是張志新(化名)和其女友劉穎戴陡,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體沟涨,經...
    沈念sama閱讀 45,403評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡恤批,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,596評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了裹赴。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片喜庞。...
    茶點故事閱讀 39,769評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖棋返,靈堂內的尸體忽然破棺而出延都,到底是詐尸還是另有隱情,我是刑警寧澤睛竣,帶...
    沈念sama閱讀 35,464評論 5 344
  • 正文 年R本政府宣布晰房,位于F島的核電站,受9級特大地震影響射沟,放射性物質發(fā)生泄漏殊者。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,075評論 3 327
  • 文/蒙蒙 一验夯、第九天 我趴在偏房一處隱蔽的房頂上張望猖吴。 院中可真熱鬧,春花似錦挥转、人聲如沸海蔽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽党窜。三九已至,卻和暖如春借宵,著一層夾襖步出監(jiān)牢的瞬間幌衣,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評論 1 269
  • 我被黑心中介騙來泰國打工暇务, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留泼掠,地道東北人怔软。 一個月前我還...
    沈念sama閱讀 47,831評論 2 370
  • 正文 我出身青樓垦细,卻偏偏與公主長得像择镇,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子括改,可洞房花燭夜當晚...
    茶點故事閱讀 44,678評論 2 354

推薦閱讀更多精彩內容

  • 轉載:http://www.reibang.com/p/32fcadd12108 每個UIView有一個伙伴稱為l...
    F麥子閱讀 6,196評論 0 13
  • 最近無意中知道了IBInspectable和IB_DESIGNABLE,感覺如果在項目中使用會給我們程序員...
    真巧了_嘿閱讀 2,325評論 0 0
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,095評論 25 707
  • 姓名:母光艷 公司:寧波貞觀電器 第235期腻豌,利他二組 【日精進打卡第93天】 【知-學習】 誦讀《六項精進》大綱...
    母光焱閱讀 105評論 0 0
  • 這么淋漓盡致的看劇惹骂,上一次是回答系列的1988苏携,雖然心里也一直提醒自己棒子劇坑人,不過金子就是金子对粪,最終我還...
    所_以閱讀 1,073評論 0 2