[英]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.