簡體   English   中英

為什么我應該使用基於塊的動畫而不是開始/結束動畫?

[英]Why should I use the block-based animation rather than begin/end animation?

如您所知,Apple鼓勵我們在iOS 4.0上使用一種稱為基於塊的動畫的新方法。

我真的很想知道基於塊的動畫比開始/結束風格動畫更好。
性能?
並發?
編碼效率和便利性?

我當時也想知道這件事。

但在使用像這樣的基於塊的動畫后:

[UIView animateWithDuration:0.5 ... ^{
    // animated custom view vertically
} completion:^{
    [UIView animateWithDuration:0.5 ... ^{
        // animate the fade in alpha of buttons
    }];
}];

它以簡潔的方式提供完成處理程序。 您還可以將子動畫塊嵌套在一起。

使用BeginAnimation / EndAnimation,我不記得究竟如何為完成處理程序執行回調,但是您通常會執行以下操作:

// begin animation // set delegate //為每個beginAnimation創建委托回調函數

現在想象一下,如果你想嵌套3或4級動畫,比如復制CSS Lightbox效果:

1)淡入Lightbox容器

2)展開寬度

3)展開高度

4)淡入形式

你必須處理一些非常混亂的if-else條件。

您的工作流程如下:

“在這個beginAnimation完成之后,它向我的回調方法發送一條消息,向下滾動Xcode以找到回調委托方法,然后在回調方法中調用另一個UIView beginAnimation,向上滾動Xcode以找到下一個beginAnimation ......”

使用基於塊的動畫,每個進程都封裝在一個塊中,您可以將其嵌套在另一個塊中。 如果您決定要更改訂單,則會出現以下情況:

1)淡入Lightbox容器

2)這次展開寬度前的高度

3)這次在高度后展開寬度

4)淡入形式

使用beginAnimation方法,您將開始拉出你的頭發。

希望有所幫助。

非常方便。

使用塊可以很好地改善性能。 因此,不太可能。 我認為動畫的所有塊語法都是調用舊方法(或者通過調用類似的內部方法來有效地執行),然后在執行beginAnimation和commitAnimation之間運行塊。

所以,方便。 無論如何,我建議僅僅因為這個原因使用它。 它使用起來容易得多,並且可以很容易地嵌套動畫並完成任務,因為您不需要創建其他方法來完成調用 - 它只是另一個塊。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM