初識runtime

算算代碼寫了一段時間,從去年的6月份到今年的11月.從一個毛頭小子,碰見問題只能選擇求助,到現(xiàn)在能獨立處理問題.我想我是熱愛的代碼的,感覺終于找到了一個喜歡的事情.畢業(yè)之后,第一份關于代碼的工作竟然是獨立開發(fā),不可能的任務,可是竟然奇跡般的挺過來了,如果沒有熱情想必也是辦不到了.我的熱情竟然在這里生根發(fā)芽了.

我清醒的意識到了自己心態(tài)的轉變,越來越想挖掘語言本質的東西用別人寫的東西,更喜歡研究為什么他們要這么設計.有了這些鋪墊,我順利的接觸到了runtime,像是發(fā)現(xiàn)了一個寶藏.下面寫個小的應用場景.用類別加runtime修改navigationbar的顏色.


.h聲明:

#import

@interfaceUINavigationBar (SetColor)

- (void)become_backgroundColor:(UIColor*)backgroudColor;

@end


.m實現(xiàn):

#import"UINavigationBar+SetColor.h"

#import

staticcharbackViewKey;

@interfaceUINavigationBar()

@property(nonatomic,strong)UIView*backView;

@end

@implementationUINavigationBar (SetColor)

- (UIView*)backView

{

returnobjc_getAssociatedObject(self, &backViewKey);

}

- (void)setBackView:(UIView*)backView

{

objc_setAssociatedObject(self, &backViewKey, backView,OBJC_ASSOCIATION_RETAIN_NONATOMIC);

}

- (void)become_backgroundColor:(UIColor*)backgroudColor

{

if(!self.backView) {

[selfsetBackgroundImage:[UIImagenew]forBarMetrics:UIBarMetricsDefault];

self.backView= [[UIViewalloc]initWithFrame:CGRectMake(0, -20, [UIScreenmainScreen].bounds.size.width,self.bounds.size.height+20)];

self.backView.autoresizingMask=UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight;

self.backView.userInteractionEnabled=NO;

[selfinsertSubview:self.backViewatIndex:0];

}

self.backView.backgroundColor= backgroudColor;

}

@end

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容