当修改导航栏、状态栏的时候,一定要慎重,因为这个可能会影响所有页面的内容。
基本的修改有以下两个步骤:
1、在 viewWillAppear
中修改,记录下修改前的状态
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[self.navigationController setNavigationBarHidden:YES animated:YES];
}
2、在viewWillDisappear
中恢复 ,确保不影响其他界面,记住这里的恢复是进入这个页面之前的状态
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
[self.navigationController setNavigationBarHidden:NO animated:YES];
}
导航栏
//隐藏导航栏
[self.navigationController setNavigationBarHidden:YES animated:YES];
//获取导航栏的状态
self.navigationController.navigationBarHidden
//防止视图延伸到导航栏(状态栏)下面去
self.edgesForExtendedLayout = UIRectEdgeNone;
状态栏
//修改单个页面的状态栏
- (void)viewDidLoad {
[super viewDidLoad];
[self prefersStatusBarHidden];
[self performSelector:@selector(setNeedsStatusBarAppearanceUpdate)];
}
- (BOOL)prefersStatusBarHidden
{
return YES;//隐藏为YES,显示为NO
}
//修改所有页面的状态栏,不需要写代码
//在info.plist 中添加:
//Status bar is initially hidden (value:YES)
//View controller-based status bar appearance (value:NO)
Scrollview 偏移的问题:
解决该问题的最简单粗暴的方法,在程序中添加下面的代码,然后手动控制ScrollView类的frame。
if (@available(iOS 11.0, *)) {
self.tv.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
} else {
self.automaticallyAdjustsScrollViewInsets = NO;
}
参考链接:
1、滑动返回中导航栏的问题
2、iOS中设置导航栏标题的字体颜色和大小
3、UIViewController的self.view布局位置问题
4、iOS11适配:关于UITableView的偏移问题记录