gpt4 book ai didi

objective-c - 为什么我应该使用基于 block 的动画而不是开始/结束动画?

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:50:01 24 4
gpt4 key购买 nike

如您所知,Apple 鼓励我们在 iOS 4.0 上使用一种称为基于 block 的动画的新方法来制作动画。

我真的很想知道什么基于 block 的动画比开始/结束风格的动画更好。
性能?
并发?
编码效率和便利性?

最佳答案

我当时也想过这个问题。

但是在使用像这样的基于 block 的动画之后:

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

它以简短的方式提供完成处理程序。您还可以将子动画 block 相互嵌套。

对于 BeginAnimation/EndAnimation,我不记得具体如何为完成处理程序执行回调,但您通常会执行以下操作:

//开始动画//设置委托(delegate)//为每个 beginAnimation 创建委托(delegate)回调函数

现在想象一下,如果你想嵌套 3 或 4 级动画,比如复制 CSS Lightbox 效果:

1) 灯箱容器淡入淡出

2) 展开宽度

3) 展开高度

4) 淡入淡出

您必须处理一些非常困惑的 if-else 条件。

您的工作流程如下:

“在这个 beginAnimation 完成后,它向我的回调方法发送一条消息,向下滚动 Xcode 以找到回调委托(delegate)方法,然后在回调方法中它调用另一个 UIView beginAnimation,向上滚动 Xcode 以找到下一个 beginAnimation .. .”

对于基于 block 的动画,每个过程都封装在一个 block 中,您可以将其嵌套在另一个 block 中。如果您决定要更改顺序,则会出现以下情况:

1) 灯箱容器淡入淡出

2) 这次先展开高度再展开宽度

3) 这次在高度后展开宽度

4) 淡入淡出

使用 beginAnimation 方法,您将开始精疲力尽。

希望对您有所帮助。

关于objective-c - 为什么我应该使用基于 block 的动画而不是开始/结束动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13135096/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com