以往自定义tabbar 都是通过继承tabbarController自定义 隐藏系统的tabbar 写个view加到tabbarController.view 这样做基本上可以满足大部分样式的tabbar样式需求 一次项目里 用到侧滑返回手势 发现了问题 隐藏自定义的tabbar 需要隐藏那个自定义的view 这样在侧滑返回手势中 即使没有完全返回 也都会一次次调用viewwillappear 等方法 让我们在返回之后显示那个自定义的view过程中出现一系列问题 要么没返回之前显示 这样就会出现在下一个页面的底端 如果完全返回之后显示 那么侧滑过程中会看到一段空白 问题依然没有解决 除非你不用侧滑手势 一点问题没有 在该隐藏的时候 隐藏
在tabbarViewcontroller 内 写如下方法
-(void)setHidesBottomBarWhenPushed:(BOOL)hidesBottomBarWhenPushed{
self.你自己定义的View.hidden = hidesBottomBarWhenPushed;
}
在你要隐藏的子页面中
-(void)viewWillAppear:(BOOL)animated
{
self.tabBarController.hidesBottomBarWhenPushed = YES;
}
在disappear里改为NO 就行了
那么如果想用侧滑手势返回 又要自定义tabbar 怎么办呢 不隐藏 系统tabbar 直接写view加在 上面
因为系统的tabbar很有灵性 在自定义navigation里面 写一下截获一下push方法事件 之后 只要在push的时候隐藏 返回到根控制器竟然 会好好的显示 一点问题没有
截获事件的写法
/**拦截push方法*/
-(void)pushViewController:(UIViewController*)viewController animated:(BOOL)animated
{
if(self.viewControllers.count>0) {
viewController.hidesBottomBarWhenPushed=YES;
}
[superpushViewController:viewControlleranimated:animated];
}
此时的自定义tabbar 和系统的是同步的 就很好处理了
网友评论