项目中经常会用到隐藏/显示tabbar的需求,但是中间总会出现意料之外的情况,总结如下:
开始的时候这样写的 self.tabBarController.tabBar.hidden = YES;看起来完美解决了页面切换键Tabbar的隐藏和显示问题。
但是,后面出现一个问题就是隐藏Tabbar的区域不能响应事件了,具体原因暂未深究,先给出解决方案 self.tabBarController.tabBar.frame = CGRectZero;需要显示的时候直接self.tabBarController.tabBar.frame = CGRectMake(0, MAX_HEIGHT-49, MAX_WIDE, 49);
另外self.tabBarController.tabBar.frame = CGRectZero这个有个小bug,左上角会出现一个几像素的Tabbar,原因暂未深究,直接修改一下坐标先解决问题。self.tabBarController.tabBar.frame = CGRectMake(-100, -100, 0, 0);
** 更新一下,用了上面的方法实际去测还是不行,于是深入研究了一下终于解决,原因如下图:
Bug示意图
Bug示意图
如图可以看到,UIview的图层不是全屏的,正好是缺少Tabbar的区域,所以导致UIview上面的子试图才会出现底部与Tabbar重叠区域无法响应事件的bug,解决方法是:
-
直接在隐藏Tabbar那里,完美解决
运行之后再查看图层发现UIview也是全屏了自然也能响应方法了。网上的解决方法用了五六种都不行,所以最好还是深入研究一下,一起加油。