2012-03-10 29 views
0

提出應該你得:的UINavigationController - 左,push和pop之間右翻轉動畫時,通過presentViewController

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
    // Override point for customization after application launch. 

    UIViewController *rootViewController = [[UIViewController alloc] init]; 
    rootViewController.view.backgroundColor = [UIColor whiteColor]; 

    [self.window setRootViewController:rootViewController]; 
    [self.window makeKeyAndVisible]; 

    UINavigationController *modal = [[UINavigationController alloc] initWithRootViewController:[[PTFrontViewController alloc] init]]; 
    modal.modalPresentationStyle = UIModalPresentationFormSheet; 
    [rootViewController presentViewController:modal animated:YES completion:NULL]; 

    return YES; 
} 

PTFrontViewControllerPTBackViewController視圖控制器有什麼有趣的這個例子的緣故。

你怎麼能從PTFrontViewController推動PTBackViewController的實例動畫如UIViewAnimationTransitionFlipFromLeftUIViewAnimationTransitionFlipFromRight

我已經清楚地知道這三樣東西:

  1. 這不正是你應該如何利用presentViewController
  2. 有一個很好的理由UINavigationController的默認動畫
  3. 有幾個答案如何在推送和彈出時「自定義」UINavigationController的默認動畫,但是如果您嘗試使用自己的代碼,則會注意到當通過presentViewController呈現視圖控制器時,會出現陰影和背景視圖,一個正確繪製

所以請回答考慮到這些事情。謝謝。

回答

1

首先忘記UINavigationController。如果您不需要默認動畫,只需將UINavigationBar放入您的控制器。它會變得更容易一些。

第二 - 這是一個難題,您不能僅在模式控制器內創建這樣的動畫,因爲背景不會被重新繪製。

真誠的,我看到的easist解決方案太遺忘了模式控制器,只是將視圖控制器添加爲根控制器的子控件。然後你可以控制所有的動畫,但是你必須自己寫一切(包括背景衰落)。