在iOS12.1上,Tabbar一旦设置为透明状态,就会出现在控制器pop到根控制器的时候出现tabbar跳动,目前网上解决的办法也有一些,目前来说有设置透明度为NO,和重写tabbar的,但是对于一些项目为了不必影响其他界面布局,就必须采用简单粗暴的办法:
一下方法经测试基本上可以解决跳动问题,目测基本看不出来:
- (UIViewController *)popViewControllerAnimated:(BOOL)animated {
[super popViewControllerAnimated:animated];
DLog(@"\n\n --- Base NavigationController Poped! --- \n\n");
//iOS 12.1 Tabbar跳动问题
if ([[[UIDevice currentDevice] systemVersion] doubleValue] >= 12.1) {
NSInteger viewcontrollersCount = self.viewControllers.count;
DLog(@"\n\n [ -- %ld -- ] \n\n",viewcontrollersCount);
if (viewcontrollersCount==1) {//返回根视图控制器才显示tabbar(可以根据具体情况)
JFTabBarViewController *tab = RooT_APPViewController;
tab.tabBar.hidden = YES;
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
tab.tabBar.hidden = NO;
});
}
}
return self.topViewController;
}
原理非常简单,pop的时候先判断如果是iOS12.1,先隐藏,0.2秒后再显示,完美解决!
网友评论