iOS跳转界面时隐藏tabBar底部变黑
tabbar 、底部黑 、跳转后view不完全
通过按钮或者连线进行push跳转时,代码里写了隐藏底部的tabbar,但是到新的controller里时,底部是一团黑色的,如图
问题描述:
项目首页用到了tabbar,当从外面的导航栏跳进去的时候,是通过按钮或者连线push的,但是跳转进去之后会发现底部有一块黑色,观察发现这个controller的view就是没有底部这一块的
代码中已经写了
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.tabBarController?.tabBar.isHidden = false
self.navigationController?.navigationBar.isHidden = true
self.navigationController?.interactivePopGestureRecognizer?.delegate = self
UINavigationBar.appearance().setBackgroundImage(UIImage(), for: .any, barMetrics: .default)
UINavigationBar.appearance().shadowImage = UIImage()
}
原因分析:
用代码隐藏后需要重设里面controller中view的尺寸,而不能直接用代码,并不会生效,百度之后有两种隐藏方法:
第一种:设置当前所处界面的隐藏属性
self.tabBarController.tabBar.hidden = YES;
第二种:设置在push的时候隐藏底部视图
UIViewController * VC=[[UIViewController alloc]init];
nextVC.hidesBottomBarWhenPushed = YES;
[self.navigationController pushViewController:VC animated:YES];
注意:隐藏tabBar之后,底部tabBar位置那块变黑了
解决方案:
第一种情况:可以看下视图的层级结构,肯定是最外层的View的高度不对
- (void)viewWillLayoutSubviews {
[super viewWillLayoutSubviews];
self.view.frame = //所需高度
}
第二种情况:增加以下代码
self.tabBarController.tabBar.hidden = YES
而我这两种试了都没用,结果在快放弃的时候发现在主controller的属性里设置hide bottom bar when push,就大功告成了,如图:
完成后效果如图:
个人分析:代码写的hide是在加载子controller的view的基础上hide,导致整个view是小于整个屏幕的,即下面一块会留黑