算算代码写了一段时间,从去年的6月份到今年的11月.从一个毛头小子,碰见问题只能选择求助,到现在能独立处理问题.我想我是热爱的代码的,感觉终于找到了一个喜欢的事情.毕业之后,第一份关于代码的工作竟然是独立开发,不可能的任务,可是竟然奇迹般的挺过来了,如果没有热情想必也是办不到了.我的热情竟然在这里生根发芽了.
我清醒的意识到了自己心态的转变,越来越想挖掘语言本质的东西用别人写的东西,更喜欢研究为什么他们要这么设计.有了这些铺垫,我顺利的接触到了runtime,像是发现了一个宝藏.下面写个小的应用场景.用类别加runtime修改navigationbar的颜色.
.h声明:
#import
@interfaceUINavigationBar (SetColor)
- (void)become_backgroundColor:(UIColor*)backgroudColor;
@end
.m实现:
#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