我試圖在我的UINavigationController
的根視圖控制器上推UIViewController
。我正在做一個自定義轉換,使它看起來像一個模態演示。推送另一個視圖控制器時,根視圖控制器的視圖消失
CATransition* trans = [CATransition animation];
trans.type = kCATransitionMoveIn;
trans.subtype = kCATransitionFromTop;
trans.duration = 0.4f;
trans.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
[self.navigationController.view.layer addAnimation:trans forKey:nil];
[self.navigationController pushViewController:vc animated:NO];
我的問題是,該self
視圖控制器的觀點似乎當我推到消失,因此而轉變運行模式,呈現後面的背景變成了黑色。
此圖片說明了這個問題:
當transtition完成品紅視圖預期是可見的,但在發生轉變的綠色背景會消失。
這是正確的。 UINavigationController以這種方式工作,當您在不使用動畫的情況下推新視圖控制器時,它立即顯示新視圖並隱藏先前視圖。 有兩種正確的方法來完成它: 1)使用新的自定義轉換協議, 2)創建自己的容器視圖控制器,而不是使用uinavigationcontroller。這個新容器將負責更改和動畫子視圖控制器。 – pjanecze