2013-01-18 50 views
0

我需要調用兩個不同的CATranistion函數之一(我創建)一個做kCATransitionFromRight,另一個做kCATransitionFromLeft,是的,當我完成時我會結合這個函數。導航堆棧中左右動畫的CATransition?

但是,我在我的導航堆棧中有一個視圖,它是1視圖深度。根據您是從視圖的上方還是下方進入或離開視圖,我需要使用左側或右側。

我目前在viewWillAppear中調用函數。

但是,我不知道如何告訴函數使用哪個方向。

我知道我可以使用應用程序委託變量,singleton或nsuserdefault設置,我只是想知道是否有一種方法我沒有考慮哪個更合適?

我知道我可以調用後面的按鈕等功能,但viewWillAppear內的調用將覆蓋此。

+ (void)transitionFromRight:(UIViewController*)view { 

    CATransition *navTransition = [CATransition animation]; 
    navTransition.duration = 0.65; 
    navTransition.timingFunction = [CAMediaTimingFunction 
      functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; 
    [navTransition setType:kCATransitionReveal]; 
    [navTransition setSubtype:kCATransitionFromRight]; 
    [view.navigationController.navigationBar.layer 
      addAnimation:navTransition forKey:nil]; 

} 
+0

您是使用UInavigationController還是烘焙了自己的機制? – occulus

回答

2

我假設您使用的是UINavigationController

你所建議的選項都不合適,因爲它們都是全局數據訪問點思想的變種,你不應該需要這樣的東西。

這裏有一個更好的辦法:

爲您UINavigationController.你能聽到關於被推向新的意見/通過的委託方法如navigationController:willShowViewController:animated:一個彈出到導航堆棧UINavigationControllerDelegate。在適當的委託方法中,您可以在您的自定義UIViewController上設置一個屬性,以便它知道在viewWillAppear中使用哪個動畫等。