gpt4 book ai didi

ios - 停止在不同线程上执行的所有动画

转载 作者:可可西里 更新时间:2023-11-01 04:42:39 26 4
gpt4 key购买 nike

我有一个菜单,其中的项目以 3 秒的间隔紧接着弹出,我是这样做的:

for(UIButton *menuItem in menuItems){
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (0.3 * i) * NSEC_PER_SEC), dispatch_get_current_queue(), ^{
[menuItem setAlpha:1.0];
}
}

是否可以在中间停止动画(例如,当触摸按钮时)?我尝试将所有内容都设置为 alpha 1.0,但正如预期的那样,线程继续运行并再次显示项目。

将不胜感激任何想法:)
谢.

最佳答案

您可以使用基于 UIView block 的动画制作动画,并设置 delay:。那里没有线程担心。

这些动画可以通过启动另一个基于 block 的动画来中断,并设置UIViewAnimationOptionBeginFromCurrentState选项。

对于 alpha 过渡,这很好,因为动画的当前位置是什么并不重要。如果您正在移动对象,您可以通过查询保存对象当前状态的 view.layer.presentationLayer 来获取当前位置。您将需要导入 QuartzCore 框架来执行此操作。这也为您提供了一个方法,removeAllAnimations,它会做很多事情,并将任何 View 直接带到它已挂起或事件的任何动画的端点。

关于ios - 停止在不同线程上执行的所有动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8027461/

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