首页 / 操作系统 / Linux / iOS修改NavigationController的背景颜色
在iOS开发的过程中,我们经常需要修改NavigationController的背景颜色,当使用方法[self.navigationController.navigationBar setBackgroundColor:[UIColor redColor]]时,运行的结果并不能修改北京颜色:现在提供一种新方法来解决这个问题:写一个NavigationBar写一个类别:@interface UINavigationBar (BackgroundColor)//设置navigationBar的背景颜色- (void)lt_setBackgroundColor:(UIColor *)backgroundColor;@end@implementation UINavigationBar (BackgroundColor)static char overlayKey;- (UIView *)overlay{ return objc_getAssociatedObject(self, &overlayKey);} - (void)setOverlay:(UIView *)overlay{ objc_setAssociatedObject(self, &overlayKey, overlay, OBJC_ASSOCIATION_RETAIN_NONATOMIC);} - (void)lt_setBackgroundColor:(UIColor *)backgroundColor{ if (!self.overlay) { [self setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault]; [self setShadowImage:[UIImage new]]; // insert an overlay into the view hierarchy self.overlay = [[UIView alloc] initWithFrame:CGRectMake(0, -20, [UIScreen mainScreen].bounds.size.width, 64)]; [self insertSubview:self.overlay atIndex:0];} self.overlay.backgroundColor = backgroundColor;}@end注意:在使用objc_getAssociatedObject需要引入头文件 #import <objc/runtime.h>本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-08/134550.htm