【发布时间】:2019-06-13 09:50:08
【问题描述】:
我在一些客观的 C 代码中处理动画时遇到了一些问题。
首先,相关代码如下:
BOOL pauseFlag; // Instance variable.
CGFloat animationDuration,pauseDuration; // Instance variables.
......
pauseFlag = NO;
animationDuration = 1.0;
pauseDuration = 1.0;
- (void)animationFunction
{
[UIView animateWithDuration:animationDuration
delay:pauseFlag?pauseDuration:0
options:UIViewAnimationOptionBeginFromCurrentState
animations:^{
......
}
completion:^(BOOL finished){
......
pauseFlag = Some_New_Value;
[self animationFunction];
}];
}
那么问题来了:
当 pauseFlag 为 YES 时应该发生的延迟没有发生。 当然,在写这篇文章之前,我已经尝试了各种我想到的解决方案,比如更改选项,我还检查了在输入 animationFunction pauseFlag 时是否有值 YES。但在所有情况下,延迟都被忽略了。
我做错了什么?我需要在我的动画中插入一个暂停,并认为这是最简单的方法。 有人有想法吗?
仅供参考,除了这个问题。此动画代码运行良好。
【问题讨论】:
-
这只是一个建议,您是否尝试过延迟硬编码值?
-
是的,我已经测试过了;在这种情况下,延迟按预期工作。但我只需要它在某些情况下出现,而不是总是出现。那是我的问题。
-
@Michel 你如何设置
pauseFlag的值? -
pauseFlag=YES;或 pauseFlag=NO;换句话说,没什么特别的。
-
问题应该是 pauseFlag = Some_New_Value 或 delay:pauseFlag?pauseDuration:0 在 animationFunction() 中取另一个 bool 并打印它,因为我试过你的代码没问题,可能有小事你失踪了。
标签: ios objective-c animation uiviewanimation