UINavigationController注意事项

来源:互联网 发布:知春大厦b座 户型图 编辑:程序博客网 时间:2024/06/05 23:05

一:需求是这样的,只在首页隐藏Navigation Bar,其他页面都不隐藏。
我在第一个视图控制器里写下了如下代码:

- (void)viewWillAppear:(BOOL)animated{    [super viewWillAppear:animated];    self.navigationController.navigationBarHidden = YES;}- (void)viewWillDisappear:(BOOL)animated{    [super viewWillDisappear:animated];    self.navigationController.navigationBarHidden = NO;}

这样写导致的结果就是当你右滑返回一部分,再回来点击push到下一个页面,导航栏会混乱,本来该显示下一个页面的标题,结果变成了上一个页面的标题,如果你在这个页面进行其他的操作很可能导致崩溃,因为系统还以为是在上一个页面。
正确的写法应该是下面这样。

- (void)viewWillAppear:(BOOL)animated {    [self.navigationController setNavigationBarHidden:YES animated:animated];    [super viewWillAppear:animated];}- (void)viewWillDisappear:(BOOL)animated {    [self.navigationController setNavigationBarHidden:NO animated:animated];    [super viewWillDisappear:animated];}


二:self.navigationController.navigationBar.translucent = NO 把导航条这个属性设置为no之后,坐标变化
iOS7之后由于navigationBar.translucent默认是YES,坐标零点默认在(0,0)点  当不透明的时候,零点坐标在(0,64);如果你想设置成透明的,而且还要零点从(0,64)开始,那就添加:self.edgesForExtendedLayout = UIRectEdgeNone; 

三:隐藏UINavigationBar下面的一条线

self.navigationController.navigationBar.shadowImage = [UIImage new];

注意,不能直接等于nil 

原创粉丝点击