初识runtime

2015-11-22  本文已影响129人  乡村武装青年

算算代码写了一段时间,从去年的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

上一篇 下一篇

猜你喜欢

热点阅读