最近在做iPhoneX的适配,遇到了一些TabBar的问题。
对于原生TabBar,iPhoneX会在其底部增加34pt,为的是不影响所谓的HomeBar,从而整个TabBar的高度变为34+49=83pt, 如下图。
iPhoneX的TabBar
但当从含有TabBar的页面push一个新页面时,TabBar会先上移34pt,并产生一个黑条,如下图。
TabBar黑条
这个体验确实很渗人,也不知道是iOS11的问题,还是项目代码有问题。查阅了一下资料,发现也有其他人出现了这个问题,但是没有提到解决办法。
于是自己开始尝试解决,最终找到一个巧妙的办法,在页面隐藏时强制设置一下TabBar的位置,代码如下:
#define SCREEN_WIDTH [UIScreen mainScreen].bounds.size.width
#define SCREEN_HEIGHT [UIScreen mainScreen].bounds.size.height
#define HEIGHT_TAB_BAR 49
#define HEIGHT_BOTTOM_MARGIN (SCREEN_HEIGHT==812?34:0) // 因为只有iPhoneX的高度为812pt
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
self.tabBarController.tabBar.frame = CGRectMake(0, SCREEN_HEIGHT-HEIGHT_TAB_BAR-HEIGHT_BOTTOM_MARGIN, SCREEN_WIDTH, HEIGHT_TAB_BAR+HEIGHT_BOTTOM_MARGIN);
}
最终效果图如下:
TabBar正常效果图
文笔不好,请见谅。如有更好的解决办法,烦请分享一下!!
网友评论