UI基础 - UINavigationController

如果导航控制器的BarButtonItem属性是一致的,可以重写initialize方法用来设置主题

//再ViewDidload执行前只执行一次
+(void)initialize
{
    //创建的UIBarButtonItem的属性会从这里获取
    UIBarButtonItem *appearance = [UIBarButtonItem appearance];
    //普通情况下
    NSMutableDictionary *nor = [NSMutableDictionary dictionary];
    nor[NSForegroundColorAttributeName] = [UIColor orangeColor];
    nor[NSFontAttributeName] = [UIFont systemFontOfSize:15];
    [appearance setTitleTextAttributes:nor forState:UIControlStateNormal];
    //高亮情况下
    NSMutableDictionary *high = [NSMutableDictionary dictionaryWithDictionary:nor];
    high[NSForegroundColorAttributeName] = [UIColor greenColor];
    [appearance setTitleTextAttributes:high forState:UIControlStateHighlighted];
    //不可以点击情况下
    NSMutableDictionary *disable = [NSMutableDictionary dictionaryWithDictionary:nor];
    disable[NSForegroundColorAttributeName] = [UIColor grayColor];
    [appearance setTitleTextAttributes:disable forState:UIControlStateDisabled];
    /**设置背景**/
    // 技巧: 为了让某个按钮的背景消失, 可以设置一张完全透明的背景图片
//    [appearance setBackgroundImage:[UIImage imageNamed:@"navigationbar_button_background"] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
}

也可以一次性设置leftBarButtonItem和rightBarButtonItem

重写

- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated;

-(void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated
{
    /*这里传进来的是navController,
     self.viewControllers.count代表nav栈里控制器的数量,如果大于0,那就不是栈低控制器
     也就不是最开始看到的四个
     */
    if(self.viewControllers.count > 0 ){
        viewController.hidesBottomBarWhenPushed = YES;
        viewController.navigationItem.leftBarButtonItem = [UIBarButtonItem initWithImage:@"navigationbar_back" HighImage:@"navigationbar_back_highlighted" action:@selector(back) target:self];
        viewController.navigationItem.rightBarButtonItem = [UIBarButtonItem initWithImage:@"navigationbar_more" HighImage:@"navigationbar_more_highlighted" action:@selector(more) target:self];
    }
    [super pushViewController:viewController animated:YES];
}

  

posted @ 2016-04-03 20:23  偏执Dog  阅读(115)  评论(0编辑  收藏  举报