今天项目中遇到一个问题, 当push后隐藏tabbar时, 偶尔会出现Tabbar闪动问题.查找根源,发现当我模态一个控制器后,再push到一个视图并隐藏tabbar时,一定会出现tabbar闪动问题.
// psuh后隐藏tabbar,通过在基类中重写该方法实现
- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated {
if (self.viewControllers.count > 0) {
viewController.hidesBottomBarWhenPushed = YES;
}
[super pushViewController:viewController animated:animated];
}
tabbar闪动问题
正常push.gif 模态后push.gif
解决方法: 在AppDelegate里或tabbar基类中设置如下
// 设置背景是否透明,默认为YES
[[UITabBar appearance] setTranslucent:NO];
该属性的官方解释
UINavigationBar/UITabBar的translucent属性解释:默认为YES,可以通过设置NO来强制使用非透明背景,如果导航条使用自定义背景图片,那么默认情况该属性的值由图片的alpha(透明度)决定,如果alpha的透明度小于1.0值为YES。如果手动设置translucent为YES并且使用自定义不透明图片,那么会自动设置系统透明度(小于1.0)在这个图片上。如果手动设置translucent为NO并且使用自定义带透明度(透明度小于0)的图片,那么系统会展示这张背景图片,只不过这张图片会使用事先确定的barTintColor进行不透明处理,若barTintColor为空,则会使用UIBarStyleBlack(黑色)或者UIBarStyleDefault(白色)
网友评论