为了保证项目的导航栏效果一直,一般都会设置导航栏的样式一样
①自定义一个NavigationController类,继承与UINavigationController类
②更改所有的UITabBarController下面的UINavigationController的class属性为自定义类形式
③主要是取得导航栏的appearance对象,操作它就设置导航栏的主题
UINavigationBar *navBar = [UINavigationBar appearance];
④导航栏背景
//设置导航栏背景的
- (void)setBackgroundImage:(UIImage *)backgroundImage forBarMetrics:(UIBarMetrics)barMetrics;
⑤设置标题
@property(nonatomic,copy) NSDictionary *titleTextAttributes;
// 字典中能用到的key在UIStringDrawing.h中
// 最新版本的key在UIKit框架的NSAttributedString.h中
自定义导航栏按钮
UIBarButtonItem *item = [UIBarButtonItem appearance];
iOS6导航栏背景的出图规格
非retina:320x44 px
retina:640x88 px
iOS7导航栏背景的出图规格
retina:640x128 px
自定义导航控制器的步骤:新建一个类,继承自UINavigationController
自定义导航控制器的价值
重写push方法就可以拦截所有压入栈中的子控制器,统一做一些处理
- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated;
重写pop方法就可以拦截所有子控制器的出栈
- (UIViewController *)popViewControllerAnimated:(BOOL)animated;
为了在push控制器时隐藏UITabBar,需要做以下设置
- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated
{
viewController.hidesBottomBarWhenPushed = YES;
[super pushViewController:viewController animated:animated];
}
initailize、load方法的区别
initailize、load都是类方法
当一个类被装载进内存时,就会调用一次load方法(当时这个类还不可用)
当第一次使用这个类时,就会调用一次initailize方法
【iOS开发-UITabBarController】UITabBarController上面的UINavigationController的设置
原文地址:http://blog.csdn.net/ttf1993/article/details/45292945