如您所知,Apple 鼓励我们在 iOS 4.0 上使用一种称为基于块的动画的新方法。
我真的很想知道基于块的动画比开始/结束风格的动画更好。
表现?
并发?
编码效率和便利性?
如您所知,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,我不记得究竟如何为完成处理程序执行回调,但您通常会执行以下操作:
// 开始动画 // 设置委托 // 为每个 beginAnimation 创建委托回调函数
现在想象一下,如果你想嵌套 3 或 4 层动画,比如复制 CSS Lightbox 效果:
1) 淡入灯箱容器
2) 展开宽度
3) 展开高度
4) 淡入淡出形式
您必须处理一些非常混乱的 if-else 条件。
您的工作流程如下:
“在这个 beginAnimation 完成后,它会向我的回调方法发送一条消息,向下滚动 Xcode 以找到回调委托方法,然后在回调方法中调用另一个 UIView beginAnimation,向上滚动 Xcode 以找到下一个 beginAnimation ...”
使用基于块的动画,每个进程都封装在一个块中,您可以将其嵌套在另一个块中。如果您决定要更改顺序,则显示如下:
1) 淡入灯箱容器
2) 这次在 Width 之前展开 Height
3) 这次在高度之后展开宽度
4) 淡入淡出形式
使用 beginAnimation 方法,您将开始拔毛。
希望有帮助。
很大程度的方便。
使用块几乎无法提高性能。所以这不太可能。我原以为动画的所有块语法都是调用旧方法(或通过调用类似的内部方法有效地做到这一点),然后在执行 beginAnimation 和 commitAnimation 之间运行块。
所以,方便。无论如何,我建议单独使用它。它更易于使用,并且可以轻松嵌套动画并在完成时执行操作,因为您无需创建其他方法来在完成时调用 - 它只是另一个块。