2015-05-21 47 views
3

編輯:如何從左向右推ViewController的幻燈片效果?動畫名需要

  • 什麼是下面的GIF動畫名稱(從右到左)?
  • 什麼是下面gif補充動畫的動畫名稱(從左到右)?

注意:我不想推一個segue。我想用這個動畫推動一個視圖。


編輯2:

一些人感到困惑,當我談論動畫名稱。但這裏要說的是作品的動畫名的例子(名稱爲:UIViewAnimationTransitionFlipFromRight):

[UIView beginAnimations: @"Showinfo"context: nil]; 
    [UIView setAnimationCurve: UIViewAnimationCurveEaseInOut]; 
    [UIView setAnimationDuration:0.75]; 
    [self.navigationController pushViewController: view animated:NO]; 
    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.navigationController.view cache:NO]; 
    [UIView commitAnimations]; 

我使用push和pop召回堆棧上的動作。我相信Navigation控制器將導航保持在堆棧樣式結構中。


我正在使用導航控制器,我喜歡使用導航欄項目返回(彈出)到先前視圖時得到的效果。從右到左效果很好,很順利。

這是一個的例子從右到左的效果

enter image description here

我怎樣才能創建互補的從右到左的效果? 換句話說,當我進入視圖層次結構時,

這是我推的視圖控制器的時刻:

[self.navigationController pushViewController:view animated:YES]; 
+1

你爲什麼要這麼說? – mm24

+1

如果我理解的很好:你想在'推'上彈出'流行'動畫? – Vinzzz

+0

這些動畫的名字是什麼? – mm24

回答

0

動畫名稱...那麼,有調用動畫的沒有獨特的方式,但是我們可以嘗試

  • 從右向左滑動在(視圖控制器滑動時提交)
  • 從左到右滑出(視圖控制器滑動被駁回)

有UIViewController的自定義切換的例子很多在這裏,見例如:the github project that re-created sample code for WWDC Session 218: Custom Transitions Using View Controllers(類你感興趣的應該是SOLSlideTransitionAnimator,使各種「滑」動畫)

編輯

好吧,你不是在談論動畫的名字,但你將2層的API,這在某種程度上是相關的:

  • 的UIView animtions(順便說一下,您使用的OLD API,與塊較新的API是優選的)

Apple UIView documentation

使用此方法的在IOS 4.0氣餒一個後來。您應該使用基於塊的動畫方法來指定您的動畫。

  • UIViewController的轉變(如導航推...)

現在,你嵌入UINavigationController推稱內UIView動畫交易。這是錯誤

爲什麼?好了,叫UINavigationControllerpushViewController:animated導致的UIView動畫被稱爲 - 無論是蘋果默認的動畫,或者你自己的動畫,如果你提供一個UIViewControllerTransitioningDelegate到控制器所以基本上你調用一個動畫裏面的動畫...

蘋果提供了從iOS 7開始自定義動畫的方法,並且您應該使用它們提供的API。這是我鏈接到的github示例代碼使用的API。如果您需要進一步的介紹,請閱讀Apple文檔,or other resources

+0

請參閱我的編輯2「動畫名稱」的解釋 – mm24

+0

好吧,現在我明白了,看我自己的編輯 – Vinzzz

0

對於推送,您通過推送視圖使用已經正確的方式,但是他們不需要任何動畫代碼,只有在代碼下方就足夠了。

[self.navigationController pushViewController: view animated:NO]; 

對於流行音樂,你可以添加的DetailView下面的代碼,它可以從iOS的7

self.navigationController.interactivePopGestureRecognizer.delegate = (id)self; 
0

我們需要添加CATransition動畫爲我們的viewController。看看這個,

add <CAAnimationDelegate> in your .h file 

    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle: nil]; 
    ViewController *VC = [storyboard instantiateViewControllerWithIdentifier:@ViewController"]; 
    CATransition *transition = [CATransition animation]; 
    transition.duration = 0.45; 
    transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionDefault]; 
    transition.type = kCATransitionPush; 
    transition.subtype = kCATransitionFromLeft; 
    transition.delegate = self; 
    [self.navigationController.view.layer addAnimation:transition forKey:nil]; 
    [self.navigationController pushViewController:VC animated:NO];