算算代碼寫了一段時間,從去年的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