gpt4 book ai didi

ios - 如何取消 UIViews 基于 block 的动画?

转载 作者:IT王子 更新时间:2023-10-29 08:05:10 24 4
gpt4 key购买 nike

我目前关注以下问题:

我启动了一个动画,其中触发了 2 个对象属性。

代码是:

    [UIView animateWithDuration:0.3 animations:^{
greyscaleImage.alpha = 1;
activityIndicator.alpha = 1;
} completion:^(BOOL f){
if(f)
{
[activityIndicator startAnimating];
}
}];

效果很好。

我发现的唯一问题是,当包含此 activityIndi​​cator 和 greyscaleImage 的 View 被释放时,我有 0.3 秒的变化使应用程序崩溃。

为了更清楚,请想象一个 ViewController,它的 View 通过默认的 iOS-modal-View 方式呈现。现在触发该动画,需要 2 分钟。在到达那 2 分钟之前,您发现动画很无聊并且您想忽略该 View 。现在, View 、activityIndi​​cator 和 greyscaleImage 被释放,动画 o/c 不知道该做什么。

所以我想知道,这里要做什么+为什么调试器指向

  } completion:^(BOOL f){

而不是例如[事件指示器 ...

有没有办法让用户在 2 分钟结束前关闭 View ?

最好的问候

最佳答案

如果您开始一个需要 0.0 秒的新动画并进入您想要进入的状态,它将取消旧动画并开始新的(即时)“动画”。

当您想通过转到它已经所在的位置来停止移动 View 的示例:

[UIView animateWithDuration:0.0
delay:0.0
options:UIViewAnimationOptionBeginFromCurrentState
animations:^{movingView.frame = ((CALayer *)movingView.layer.presentationLayer).frame;}
completion:^(BOOL finished){}
];

options:UIViewAnimationOptionBeginFromCurrentState 很重要。不调用它会让你的动画从前一个动画的结束状态开始。在运动中,它会先跃迁到终点位置,然后再跃迁到您希望它停下来的地方。即使您的取消“动画”是即时的,来回跳跃也可能是可见的。

注意:动画时间不必是0.0秒,任何动画都会取消旧的。虽然不完全确定不同类型的动画。例如,我不知道更改帧是否会停止淡入淡出。

关于ios - 如何取消 UIViews 基于 block 的动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7967425/

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