巧用KeyPath設(shè)置Storyboard

UIStoryboard這個(gè)東西讓人又愛(ài)又恨弟翘,有些大觸執(zhí)著使用純代碼布局箩做,而很多和我一樣的新手還是更加喜歡這種相對(duì)簡(jiǎn)單雖然有很多麻煩的小公舉莽红。

UIStoryboard里通過(guò)IB可以配置很多屬性,比如給一個(gè)UIButton設(shè)置tittle邦邦、image安吁。

而當(dāng)給控件設(shè)置圓角的時(shí)候,我們需要使用到KeyPath方法燃辖,原理和代碼的是一樣的鬼店,只是給了開(kāi)發(fā)者直接在UIStoryboard上的自定義空間。


給一個(gè)控件增加了5半徑的圓角

此處的KeyPath和代碼中的是一毛一樣的黔龟,所以我們完全可以利用它做“任何事”妇智。


下面是我的方式:

創(chuàng)建一個(gè)NSObject的分類(lèi),我的叫“NSObject+KeypathForSB”氏身。(其實(shí)好像弄UIView的分類(lèi)比較靠譜點(diǎn)巍棱,不過(guò)我這里直接偷懶用了超級(jí)父類(lèi))

NSObject+KeypathForSB.h

在.h中只是注釋 用來(lái)標(biāo)識(shí)一些自己用到的KeyPath

#import@interface NSObject (KeypathForSB)

// 利用sb中的keypath設(shè)定一下自定義屬性或調(diào)用部分方法

/**

*? Key Path : backgroundColorForHl

*? Type? ? : UIColor

*? Object? : UIButton

*/

/**

*? Key Path : backgroundColorForSl

*? Type? ? : UIColor

*? Object? : UIButton

*/

/**

*? Key Path: borderColor

*? Type? ? : UIColor

*? Object? : UIView

*/

/**

*? Key Path: placeholderColor

*? Type? ? : UIColor

*? Object? : UITextField

*/

@end

NSObject+KeypathForSB.m

#import "NSObject+KeypathForSB.h"

#import "UIImage+Custom.h"

@implementation NSObject (KeypathForSB)

- (void)setValue:(id)value forUndefinedKey:(NSString *)key {

if ([self isKindOfClass:[UIButton class]]) {

[self buttonHandleWithKey:key value:value];

}

if ([self isKindOfClass:[UIView class]]) {

[self viewHandleWithKey:key value:value];

}

if ([self isKindOfClass:[UITextField class]]) {

[self textFieldHandleWithKey:key value:value];

}

}

#pragma view

- (void)viewHandleWithKey:(NSString *)key value:(id)value {

UIView *view = (UIView *)self;

if ([key isEqualToString:@"borderColor"]) {

UIColor *color = (UIColor *)value;

view.layer.borderColor = color.CGColor;

}

}

#pragma button

- (void)buttonHandleWithKey:(NSString *)key value:(id)value {

UIButton *btn = (UIButton *)self;

if ([key isEqualToString:@"backgroundColorForHl"]) {

[btn setBackgroundImage:[UIImage createImageWithColor:value] forState:UIControlStateHighlighted];

}

if ([key isEqualToString:@"backgroundColorForSl"]) {

[btn setBackgroundImage:[UIImage createImageWithColor:value] forState:UIControlStateSelected];

}

}

#pragma textField

- (void)textFieldHandleWithKey:(NSString *)key value:(id)value {

UITextField *tf = (UITextField *)self;

if ([key isEqualToString:@"placeholderColor"]) {

[tf setValue:value forKeyPath:@"placeholderLabel.textColor"];

}

}

@end


在.m實(shí)現(xiàn)中,我就是利用了“- (void)setValue:(nullable id)value forUndefinedKey:(NSString *)key”這個(gè)方法蛋欣,在UIStoryboard里寫(xiě)自定義KeyPath然后在上述方法中分門(mén)別類(lèi)地執(zhí)行自己想要的操作航徙。

PS:此法在作為L(zhǎng)aunchScreen的UIStoryboard中是無(wú)效的

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市豁状,隨后出現(xiàn)的幾起案子捉偏,更是在濱河造成了極大的恐慌,老刑警劉巖泻红,帶你破解...
    沈念sama閱讀 221,820評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件夭禽,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡谊路,警方通過(guò)查閱死者的電腦和手機(jī)讹躯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)缠劝,“玉大人潮梯,你說(shuō)我怎么就攤上這事〔夜В” “怎么了秉馏?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,324評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)脱羡。 經(jīng)常有香客問(wèn)我萝究,道長(zhǎng)免都,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,714評(píng)論 1 297
  • 正文 為了忘掉前任帆竹,我火速辦了婚禮绕娘,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘栽连。我一直安慰自己险领,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,724評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布秒紧。 她就那樣靜靜地躺著绢陌,像睡著了一般。 火紅的嫁衣襯著肌膚如雪噩茄。 梳的紋絲不亂的頭發(fā)上下面,一...
    開(kāi)封第一講書(shū)人閱讀 52,328評(píng)論 1 310
  • 那天复颈,我揣著相機(jī)與錄音绩聘,去河邊找鬼。 笑死耗啦,一個(gè)胖子當(dāng)著我的面吹牛凿菩,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播帜讲,決...
    沈念sama閱讀 40,897評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼衅谷,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了似将?” 一聲冷哼從身側(cè)響起获黔,我...
    開(kāi)封第一講書(shū)人閱讀 39,804評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎在验,沒(méi)想到半個(gè)月后玷氏,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,345評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡腋舌,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,431評(píng)論 3 340
  • 正文 我和宋清朗相戀三年盏触,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片块饺。...
    茶點(diǎn)故事閱讀 40,561評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡赞辩,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出授艰,到底是詐尸還是另有隱情辨嗽,我是刑警寧澤,帶...
    沈念sama閱讀 36,238評(píng)論 5 350
  • 正文 年R本政府宣布淮腾,位于F島的核電站糟需,受9級(jí)特大地震影響岛心,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜篮灼,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,928評(píng)論 3 334
  • 文/蒙蒙 一忘古、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧诅诱,春花似錦髓堪、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,417評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至炮沐,卻和暖如春争群,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背大年。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,528評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工换薄, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人翔试。 一個(gè)月前我還...
    沈念sama閱讀 48,983評(píng)論 3 376
  • 正文 我出身青樓轻要,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親垦缅。 傳聞我的和親對(duì)象是個(gè)殘疾皇子冲泥,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,573評(píng)論 2 359

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