当我们自己创建了一个自定义的tabBar,通过push跳转页面的时候,会发现tabBar没有像我们所希望的那样隐藏起来。
然后,我们通过hide来隐藏我们的tabBar,又会遇到第二个问题,tabBar的出现和消失会很突兀,并不是我们所想要的。
有的人提出用,hidesBottomBarWhenPushed来控制,第三个问题来了,我们自定义的tabBar跟系统的tabBar没有关系啊。
以上的问题我曾经也遇到过,然后解决了,下面我就分享下我的解决思路。
Step 1 push
Step 2 截屏
Step 3 隐藏tabBar
Step 4 返回
Step 5 viewDidAppear
1.push
一个很常见的Nav push,直接push过去就可以了
2.截取屏幕
在push过之前,我们需要截取一张图片,也就是push过去之前,控制器的状态。
我们将这个图片覆盖在前一个控制上,这样的话,当你pop返回的时候,也会看到这张图片。
/** * 截取屏幕的方法 */
- (void)cutScreem{
UIGraphicsBeginImageContextWithOptions(self.tabBarController.view.bounds.size, YES, 0.0);
// 截取层的画面
[self.tabBarController.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
// 将图片给铺满整个视图
self.backImageView.image = image;
}
3.隐藏tabBar
在下一个控制器中,viewDidLoad隐藏自定义控制器。
4.返回
在iOS 7.0 之后,Nav返回有两种:
第一种是点击返回按钮,第二种是屏幕侧滑返回
5.viewDidAppear
以上的都是为了针对第二种返回的解决方案。
在返回到上一层控制器的时候:
第一步, 我们先要移除覆盖在上面ImageView。
第二步, 我们要使我们的自定义tabBar出现。