當(dāng)我們自己創(chuàng)建了一個(gè)自定義的tabBar,通過push跳轉(zhuǎn)頁面的時(shí)候,會(huì)發(fā)現(xiàn)tabBar沒有像我們所希望的那樣隱藏起來。
然后,我們通過hide來隱藏我們的tabBar,又會(huì)遇到第二個(gè)問題,tabBar的出現(xiàn)和消失會(huì)很突兀,并不是我們所想要的。
有的人提出用,hidesBottomBarWhenPushed來控制,第三個(gè)問題來了,我們自定義的tabBar跟系統(tǒng)的tabBar沒有關(guān)系啊。
以上的問題我曾經(jīng)也遇到過,然后解決了,下面我就分享下我的解決思路。
Step 1 push
Step 2 截屏
Step 3 隱藏tabBar
Step 4 返回
Step 5 viewDidAppear
1.push
一個(gè)很常見的Nav push,直接push過去就可以了
2.截取屏幕
在push過之前,我們需要截取一張圖片,也就是push過去之前,控制器的狀態(tài)。
我們將這個(gè)圖片覆蓋在前一個(gè)控制上,這樣的話,當(dāng)你pop返回的時(shí)候,也會(huì)看到這張圖片。
/** * 截取屏幕的方法 */
- (void)cutScreem{
UIGraphicsBeginImageContextWithOptions(self.tabBarController.view.bounds.size, YES, 0.0);
// 截取層的畫面
[self.tabBarController.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
// 將圖片給鋪滿整個(gè)視圖
self.backImageView.image = image;
}
3.隱藏tabBar
在下一個(gè)控制器中,viewDidLoad隱藏自定義控制器。
4.返回
在iOS 7.0 之后,Nav返回有兩種:
第一種是點(diǎn)擊返回按鈕,第二種是屏幕側(cè)滑返回
5.viewDidAppear
以上的都是為了針對(duì)第二種返回的解決方案。
在返回到上一層控制器的時(shí)候:
第一步, 我們先要移除覆蓋在上面ImageView。
第二步, 我們要使我們的自定義tabBar出現(xiàn)。