iOS导航栏控制的一些总结导航栏控制的一些总结
前言前言
许久不写UI,对UI的很多东西都生疏了,最近使用导航栏的各种场景做一些总结。
1.导航栏的显示与隐藏导航栏的显示与隐藏
导航栏的显示与隐藏,分两种情况:
1.从不显示导航栏的页面push到显示导航栏的页面。
2.从显示导航栏的页面Push到不显示导航栏的页面。
注意:注意:
1.如果导航栏不显示时,系统的侧滑返回功能无效。
2.虽然侧滑返回功能无效,但是导航栏的 .interactivePopGestureRecognizer.delegate还是存在的。
针对以上两种情况分别处理,整个Push过程都假设是从A页面跳转到B页面
1.1 从不显示导航栏的页面从不显示导航栏的页面Push到显示导航栏的页面。到显示导航栏的页面。
关于导航栏的显示,是否顺滑,是通过如下两个方法来控制。
// 不显示动画,导航栏显示就比较突兀
[self.navigationController setNavigationBarHidden:YES];
// 显示动画,在侧滑时,导航栏显示就比较顺滑
[self.navigationController setNavigationBarHidden:YES animated:YES];
所以,做法是:
A页面:
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[self.navigationController setNavigationBarHidden:YES animated:YES];
}
B页面:
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[self.navigationController setNavigationBarHidden:NO animated:YES];
}
1.2 从显示导航栏的页面跳转到不显示导航栏的页面从显示导航栏的页面跳转到不显示导航栏的页面
这种情况的做法如下:
A页面:
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[self.navigationController setNavigationBarHidden:NO animated:YES];
}
B页面:
// 在页面将要出现时,记录原始侧滑手势代理对象,并将手势代理设置为当前页面
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];