【iOS开发-UITabBarController】UITabBarController上面的UINavigationController的设置

自定义导航栏

为了保证项目的导航栏效果一直,一般都会设置导航栏的样式一样

①自定义一个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

自定义NavigationController

自定义导航控制器的步骤:新建一个类,继承自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方法

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。