我有一个iOS应用程序,它运行几个不同的UIViewAnimation
块,在屏幕上为几个不同的对象设置动画。这一切都是可行的,但我如何停止其中一个动画块而不停止其余的?
我尝试过使用以下方法:
[button.layer removeAllAnimations];
但它什么都没做,动画还在继续。
然后,我尝试使用一个简单的BOOL
值,并在BOOL
设置为"NO"后,让动画从方法返回,但这也不起作用。
以下是我试图停止的动画:
-(void)undo_animation:(int)num {
// Fade out/in the number button label
// animation which lets the user know
// they can undo this particular action.
[UIView animateWithDuration:0.5 delay:0.2 options:(UIViewAnimationOptionRepeat | UIViewAnimationOptionCurveEaseIn | UIViewAnimationOptionAllowUserInteraction) animations:^{
// Mostly fade out the number button label.
((UIButton *)_buttons[num]).alpha = 0.2;
} completion:^(BOOL finished) {
[UIView animateWithDuration:0.5 delay:0.2 options:(UIViewAnimationOptionCurveEaseIn | UIViewAnimationOptionAllowUserInteraction) animations:^{
// Fade in the number button label.
((UIButton *)_buttons[num]).alpha = 1.0;
} completion:^(BOOL finished) {
// Stop the animation if the BOOL
// is set to 'NO' animations.
if (anim_state_button == NO) {
return;
}
}];
}];
}
谢谢你,丹。
我的理解是,从相关层移除所有动画应该会停止所有动画。[((UIButton*)_buttons[num])。图层移除AllAnimations];
怎么样?
我认为最简单的方法是删除视图层中的所有动画,因为默认情况下,所有动画都添加到视图层中。
[yourRequiredView.layer removeAllAnimations];
如果使用UIKit动画,则无法访问running animation属性。因此,如果你想在核心动画的运行时修改动画,我建议你使用核心动画。
这是太简单,以删除阿尔法的视图,如下图所示。
CABasicAnimation* fadein= [CABasicAnimation animationWithKeyPath:@"opacity"];
[fadein setToValue:[NSNumber numberWithFloat:1.0]];
[fadein setDuration:0.5];
[[moviepic layer]addAnimation:fadein forKey:@"MyAnimation"];
将动画添加到图层动画之后,将开始,并且您可以使用委托方法了解animationDidFinish:method
- (void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag
{
NSLog(@"Animation interrupted: %@", (!flag)?@"Yes" : @"No");
}
此外,您可以随时从使用中获得;
[[moviepic layer] animationForKey:@"MyAnimation"];
当然,你需要把CoreAnimation框架添加到你的项目中。
希望有帮助。
我有一个简单的UILabel,当你长按它时,它就会开始旋转。我使用以下代码成功地实现了这一点: 用户只需双击标签,就可以在任何时候停止这个动画。下面是代码: 问题是,下次你长按标签时,它没有反应。旋转动画不会再次启动。你必须再次点击它才能让它再次运行。 所以模式是: 1)长按-动画开始 2)双击-动画停止 3)长按-什么都没有发生 4)再次长按-动画再次开始 我该怎么解决这个问题?
问题内容: 我有一个按钮“ addCashier”,它正在创建一个名为“ Cashier”的线程,现在该线程只是每4秒简单地生成一个订单,该线程的run()方法中有while(true)循环。那里一切都很好,但是现在我想添加一个按钮来模拟收银员注销。我在我的while循环onDuty和一个公共函数logOff()中添加了一个布尔变量,该函数将onDuty布尔值设置为false,以使我退出运行的wh
如何阻止viewpager仅向一个方向滚动。例如,只允许向右滑动,而不允许向左滑动。我完全被卡住了,任何帮助都将不胜感激。要注意的是,我需要让它在Android 2.2版上工作,所以我使用ViewPager的兼容性库。 提前感谢
Since 10.0.18 stopContinuousLocation stopContinuousLocation 停止持续获取当前设备的经纬度信息 支持版本:从10.0.18开始 使用方法 和startContinuousLocation 配对使用, 单独使用没有效果, 且一定要先点击 启动持续定位,在点击停止持续定位才有效果。 测试地址:startContinuousLocation Al
我有一个计划任务,当应用程序上下文加载时开始工作,并一直运行到程序结束。 我想节省一些资源,只在需要时运行计划任务。 下面是我想象的抽象代码。 我很好奇,有可能达到这样的结果吗?
这是我的一部分代码。好吧,我的问题是,当我输入错误的值时,如何跳过catch块?例如,正如你们所看到的,我需要坐标为双精度或浮点,但当我输入字符串时,它在循环时开始无限大。在用户输入正确的值之前,如何防止它并使程序从头开始? 这是我的代码,没有循环和标签。在正确的数据输入之前,我如何才能使代码工作