2011-12-19 82 views
17

TwUI,有一種叫做redrawTUIView方法。它強制視圖重繪,但它也帶有視圖的新舊狀態之間的自由衰落動畫。用淡出動畫重繪UIView?

我想知道如果這樣的事情在一個正常的UIView是可能的。基本上,我如何重新繪製視圖(setNeedsDisplay)與舊狀態和新狀態之間的淡出動畫?

+0

這個問題是相似的,但不完全是我正在尋找:http://stackoverflow.com/questions/4730110/i-want-to-animate-in-fact-fade-within-drawrect –

+0

你需要與其他問題有什麼不同? –

+0

這個問題似乎只是在視圖中應答褪色,而不是用淡入淡出過渡更新視圖。 –

回答

38

使用+[UIView transitionWithView:duration:options:animations:completion:]UIViewAnimationOptionTransitionCrossDissolve選項,動畫塊內,強制視圖的層立即重繪其內容。

[myView setNeedsDisplay]; 
[UIView transitionWithView:myView duration:1 
    options:UIViewAnimationOptionTransitionCrossDissolve 
    animations:^{ 
     [myView.layer displayIfNeeded]; 
    } completion:nil]; 
+1

你是男人!完美工作。我真的應該刷我的核心動畫,不是嗎? –

+0

哈哈,也許吧。我從WWDC 2011的* [Core Animation Essentials](https://developer.apple.com/videos/wwdc/2011/#core-animation-essentials)*視頻中瞭解了許多*。但對於您的問題,我也必須編寫一個小測試程序來改變代碼創建的CALayer的內容屬性並查看附加的動畫。 –

+0

感謝您的鏈接,我會在某個時候觀看它。我還購買了Zarra&Long的書* Core Animation *,但我很慚愧地說我還沒有讀過它。是時候休息一下了! :) –

1

如何使用交叉疊的UIView過渡?

[UIView transitionWithView:aView 
        duration:TIME_INTERVAL 
        options:UIViewAnimationOptionTransitionCrossDissolve 
       animations:^{ 
        // Change the view's state 
       } 
       completion:^(BOOL finished) { 
        // Completion block 
       }];