在iOS中同步禁用动画?

时间:2015-03-05 09:55:49

标签: ios animation uiview synchronization

我使用了一些看似如下例子的各种块:

        [UIView setAnimationsEnabled:NO];
        ...
        [UIView setAnimationsEnabled:YES];

据我所知,可以在后台线程中调用它们,我应该防止混合使用disable / enable命令。如何正确地做到这一点?

2 个答案:

答案 0 :(得分:0)

UIKit操作无法在后台线程上完成。它们只能在主线程上完成。即,只能在主线程上启用/禁用动画。你可以对用例更具体一点吗?

答案 1 :(得分:0)

  
      
  • (void)setAnimationsEnabled:(BOOL)enabled说明设置是否启用动画。默认情况下启用动画。如果你   禁用动画,后续动画块中的代码仍然是   已执行,但实际上没有动画。因此,您所做的任何更改   动画块内部立即反映而不是   动画。无论您使用基于块的动画,都是如此   方法或开始/提交动画方法。这种方法会影响   只有那些在调用后提交的动画。如果你   在现有动画运行时调用此方法   动画继续运行,直到达到自然终点。
  •   

setAnimationsEnabled的文档没有说明后台线程的任何内容。实际上,iOS中的所有UI操作都必须在主线程中完成。

所以回答你的问题,你唯一需要注意的是在主线程中调用setAnimatinosEnabled方法。

如果您想在不同时刻执行不同的动画块,则更易于使用:

+ (void)animateWithDuration:(NSTimeInterval)duration animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion NS_AVAILABLE_IOS(4_0); // delay = 0.0, options = 0