在我的应用程序中,我运行了大量的动画,移动的对象和形状等。 许多动画导致其他对象的动画。 应用程序的一个问题是,如果动画正在运行,并且您启动另一个涉及当前正在动画的对象之一,则屏幕变白/我们会得到意想不到的结果。检测可可动画是否正在进行(使用布尔),以防止多个同时动画
我工作了一些示例代码来展示我们正在尝试做的:
UIButton *button;
BOOL currentlyShowingQuestion;
- (void)viewDidLoad
{
[self moveButton:button];
currentlyShowingQuestion = NO;
[NSTimer scheduledTimerWithTimeInterval:.1 target:self selector:@selector(hasBoolChanged) userInfo:nil repeats:YES];
}
- (void)moveButton:(UIButton *)buttonToUse {
currentlyShowingQuestion = YES;
NSLog(@"moveButton Called! Yippee!!!!!!!");
[UIView animateWithDuration:0.5 delay:0.5 options:nil animations:^{
buttonToUse.frame = CGRectMake(10, 10, 300, 440);
} completion:^(BOOL finished){
currentlyShowingQuestion = NO;
}];
}
-(void)hasBoolChanged {
if (currentlyShowingQuestion == YES) {
NSLog(@"Yes");
}
else if (currentlyShowingQuestion == NO) {
NSLog(@"No");
}
}
我到底是什么了实际上看到的是像currentlyShowingQuestion BOOL方法运行时都得到迅速改变,所以它的变化到YES并立即返回到NO。然后动画运行。为什么是这样?订单有什么问题?
任何帮助表示赞赏。 对不起,关于代码格式 - 我无法弄清楚这里的语法。
由于提前,
山姆