2012-02-22 65 views
3

我目前通過執行以下操作執行起來捲曲動畫:有沒有其他方法使用動畫塊來執行此動畫?

CATransition *animation = [CATransition animation]; 
animation.type = @"pageCurl"; 
animation.subtype = kCATransitionFromTop; 
animation.fillMode = kCAFillModeForwards; 
animation.duration = 1; 
animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]; 
[[self.view.window layer] addAnimation:animation forKey:nil]; 

該動畫將只執行一個頁面捲曲動畫,但最終你留在看你有開始了同樣的觀點。沒有發生過真正的轉換。

現在用動畫塊我知道你可以做些什麼來的效果:

[UIView transitionFromView:self.view 
        toView:aNewView // a view to transition to 
        duration:1 
        options:UIViewAnimationTransitionCurlUp|UIViewAnimationOptionCurveEaseIn 
       completion:NULL]; 

但是,使用要轉換到一個新的視圖動畫塊,aNewView,這是從CATransition動畫不同,高於該重用相同的觀點(沒有真正的過渡發生)。動畫塊的問題是你必須實際創建新的視圖才能轉換到這個視圖,因爲視圖相當複雜,我寧願不創建一個UIView子類。

有沒有辦法使用動畫塊執行上述CATransition動畫,同時避開重建視圖或創建自定義子類的困難?

+0

你不能只做[UIView的transitionFromView:self.view toView:self.view ...? – Letrstotheprez 2012-02-22 03:32:26

+0

沒有。視圖被刪除出於某種原因,屏幕是黑色 – 2012-02-22 17:17:18

+0

我認爲你可以嘗試[UIView transitionFromView:self.view toView:[self.view copy] ... – Letrstotheprez 2012-02-23 02:41:28

回答

3

好的 - 所以我想出了任何有興趣的人。它其實超級簡單。你可以簡單的使用方法:transitionWithView:duration:options:animations:completion:

例如:

[UIView transitionWithView:self.view 
        duration:1 
        options:UIViewAnimationOptionTransitionCurlUp|UIViewAnimationCurveEaseIn 
       animations:^{ // do anything you want here } 
       completion:NULL]; 

就是這樣。這將顯示一個轉換動畫回到相同的視圖。您可以對動畫塊中的新視圖進行任何更改(可能會顯示一些新文本,無論是...)。

我希望這可以幫助別人出了線......

+0

+100非常好,我正在找這個,謝謝! – Tomasz 2012-10-20 05:38:14

相關問題