百思学习笔记10-自定义导航控制器

来源:互联网 发布:中国金融数据网 编辑:程序博客网 时间:2024/06/06 21:40

我们要统一所有的导航栏控制器,不能一个一个的子控制器去设置

这时我们需要自定义导航控制器来统一样式

首先新建一个继承UINavigationController的类

然后在自定义的TabBarController中设置

XMGNavigationController *nav = [[XMGNavigationController alloc] initWithRootViewController:vc];

我们就可以自定义的UINavigationController中来个性化了

/** * 可以在这个方法中拦截所有push进来的控制器 */- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated{    if (self.childViewControllers.count > 0) { // 如果push进来的不是第一个控制器        UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];        [button setTitle:@"返回" forState:UIControlStateNormal];        [button setImage:[UIImage imageNamed:@"navigationButtonReturn"] forState:UIControlStateNormal];        [button setImage:[UIImage imageNamed:@"navigationButtonReturnClick"] forState:UIControlStateHighlighted];        button.size = CGSizeMake(70, 30);        // 让按钮内部的所有内容左对齐        button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;//        [button sizeToFit];        // 让按钮的内容往左边偏移10        button.contentEdgeInsets = UIEdgeInsetsMake(0, -10, 0, 0);        [button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];        [button setTitleColor:[UIColor redColor] forState:UIControlStateHighlighted];        [button addTarget:self action:@selector(back) forControlEvents:UIControlEventTouchUpInside];        viewController.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:button];        // 隐藏tabbar        viewController.hidesBottomBarWhenPushed = YES;    }        // 这句super的push要放在后面, 让viewController可以覆盖上面设置的leftBarButtonItem    [super pushViewController:viewController animated:animated];    }- (void)back{    [self popViewControllerAnimated:YES];}


最后分享一个在PCH中方便设置颜色的方法

#define XMGRGBColor(r, g, b) [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:1.0]#define XMGGlobalBg XMGRGBColor(223, 223, 223)


0 0