iOS相关

完美的自定义导航的思路

2018-02-06  本文已影响11人  iOS_Ru

实现自定义导航确实有好多种办法
1.可以修改系统原生导航的透明度 这样可以有系统动画的效果
2.可以自定义个view 然后把系统的导航条隐藏条
以上两中方法 有时候避免不了一个问题 就是侧滑控制器 回看见导航条的闪烁 动画不够优美

我现在的这个思路可以完美解决这个问题
1.我采取的是上面的第二种方法
核心代码是- (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [self.navigationController setNavigationBarHidden:YES animated:YES]; }然后再viewDidLoad里面添加自定的的view导航
在 viewWillDisAppear里面调用[self.navigationController setNavigationBarHidden:NO animated:YES];但是如果是两个相邻的控制器都需要自定义导航 有的调转到有导航的页面 有的跳转的没有导航的页面 就会在什么时候去隐藏导航和显示导航 很头疼
2.我想到了一个方法 一般我们搭建的框架都会自定义一个控制器 比如取名BaseViewController然后 自定义其他控制器的时候都集成与这个控制器.
BaseViewController里添加个属性

/** 是否自定义导航的NavBar */
@property (nonatomic, assign) BOOL userDefinedNavBar;

然后再BaseViewController 的- (void)viewWillAppear:(BOOL)animated这么写

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    //判断是否隐藏导航
    if (self.userDefinedNavBar) {
        [self.navigationController setNavigationBarHidden:YES animated:YES];
    }else {
        [self.navigationController setNavigationBarHidden:NO animated:YES];
    }
}

3.在用到自定义的控制器里的viewDidLoad方法里面把这个标识符置为YES

- (void)viewDidLoad {
    [super viewDidLoad];
    //需要自定义导航
    self.userDefinedNavBar = YES; 
}

然后就看你自定义的导航是什么效果了 想怎么自定义导航都行 而且还有系统侧滑的动画效果 而且再也不会出现导航闪烁的问题了

以下是我实现的一个小demo 如有问题可以联系我 邮箱rujianbin@163.com
demo地址github

上一篇下一篇

猜你喜欢

热点阅读