比如说我们要设置导航条的背景或者颜色,我们可以在导航控制器的+initialize方法里面做一次性设置
// 第一次加载这个类的时候调用,当程序一启动的时候就会把这个类加载进内存
// 作用:为类分配一个内存
//+ (void)load
//{
// NSLog(@"%s",__func__);
//}
// 当前类或者它的子类第一次使用的时候调用
// 初始化一个类
// 不一定只会调用一次,比如说如果有很多子类,第一次使用子类的时候,这个方法会调用多次
+ (void)initialize
{
if (self == [XMGNavigationController class]) { // 判断下是否是当前类对象在调用
// 设置导航条的背景,文字颜色
// 谁用我的导航控制器,只设置使用自己导航控制器下的导航条
// 获取整个app里所有导航条外观的标志
// UINavigationBar *bar = [UINavigationBar appearance];
// 获取当前类下的导航条
// self->XMGNavigationController
UINavigationBar *bar = [UINavigationBar appearanceWhenContainedIn:self, nil];
// Do any additional setup after loading the view.
// 设置导航条背景图片,必须填UIBarMetricsDefault
// 使用UIBarMetricsDefault,导航控制器的子控制器view的尺寸不包括导航条部分
[bar setBackgroundImage:[UIImage imageNamed:@"NavBar64"] forBarMetrics:UIBarMetricsDefault];
// 设置导航条文字颜色
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
// 设置颜色
dict[NSForegroundColorAttributeName] = [UIColor whiteColor];
dict[NSFontAttributeName] = [UIFont boldSystemFontOfSize:22];
[bar setTitleTextAttributes:dict];
// 统一设置导航条按钮的颜色
[bar setTintColor:[UIColor whiteColor]];
// 获取UIBarButtonItem
UIBarButtonItem *item = [UIBarButtonItem appearanceWhenContainedIn:self, nil];
// 设置导航条返回按钮的文字的位置
[item setBackButtonTitlePositionAdjustment:UIOffsetMake(0, -64) forBarMetrics:UIBarMetricsDefault];
}
}
网友评论