自定义导航控制器(统一返回按钮)

| 自定义的导航控制器继承自系统的导航控制器(UINavigationController), 然后在写自己的代码.

.h 文件

#import <UIKit/UIKit.h>

@interface YYNavController : UINavigationController

@end

.m 文件

#import "YYNavController.h"

@interface YYNavController ()

@end

@implementation YYNavController

/**
 当第一次来到这个类的时候调用一次
 在这里做一些类的初始化设置
 */
+ (void)initialize{
    // 设置导航栏背景图片 通过appearance设置那几个类的NAV的背景图
    UINavigationBar *bar = [UINavigationBar appearanceWhenContainedInInstancesOfClasses:@[[self class]]];
    [bar setBackgroundImage:[UIImage imageNamed:@""] forBarMetrics:UIBarMetricsDefault];
}

- (void)viewDidLoad {
    [super viewDidLoad];
}

- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated{
    
    if (self.childViewControllers.count > 0) { // 这个判断一定要加, 不然会有问题
        UIButton *backBtn = [UIButton buttonWithType:UIButtonTypeCustom];
        backBtn.size = CGSizeMake(100, 30);
        // 设置文字颜色
        [backBtn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
        [backBtn setTitleColor:[UIColor redColor] forState:UIControlStateHighlighted];
        // 设置标题
        [backBtn setTitle:@"返回" forState:UIControlStateNormal];
        // 设置图片
        [backBtn setImage:[UIImage imageNamed:@""] forState:UIControlStateNormal];
        [backBtn setImage:[UIImage imageNamed:@""] forState:UIControlStateHighlighted];
        // 添加点击事件
        [backBtn addTarget:self action:@selector(backAction) forControlEvents:UIControlEventTouchUpInside];
        
        
        //设置内容靠左显示(重点)
        backBtn.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
        // 设置内边距(重点)
        [backBtn setContentEdgeInsets:UIEdgeInsetsMake(0, -10, 0, 0)];
        viewController.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc]initWithCustomView:backBtn];
        
        viewController.hidesBottomBarWhenPushed = true; // 隐藏底部tabBar
    }
    [super pushViewController:viewController animated:animated];
}

- (void)backAction{
    [self popViewControllerAnimated:true];
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
}

@end

注意:1.使用前添加头文件
2.图片名称没有补全

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,241评论 4 61
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,933评论 18 139
  • 靠钱买安稳 这使得我非常贫穷
    橘町里阅读 83评论 0 0
  • 刚刚上床不久,室友的闹钟就响了,有一种时空错乱的感觉,有一点光亮,突然也有了一瞬间想要起来的冲动,却还是不愿意动,...
    听雷雷说阅读 319评论 0 0
  • 四月的柳絮 已经随风远去 五月的阴雨 像是孩子的哭泣 路边的小草 已不是那一片新绿 而你 还是一如当初的美丽 可是...
    想和你互相浪费阅读 243评论 0 7