使用Objective-C块的UIView动画

时间:2011-02-22 14:31:34

标签: iphone objective-c animation uiview objective-c-blocks

我一直在玩弄UIView动画的两种不同方式:开始/提交和阻止。

我注意到beginAnimations:context: / commitAnimations处理方式非常异步,在动画运行时保持UI自由。

但是,我也注意到animateWithDuration:animations:completion方式似乎阻止了UI,使动画运行时没有响应。

我认为使用块的一个要点是轻松实现异步执行。为什么UIView动画的块变体会阻止UI,而开始/提交变体却没有?

修改

我的问题最初假设块动画是同步操作并阻止了UI。从Jeff Kelly的回答中可以看出,事实并非如此。我原来的假设不正确,块动画不同步。有关详细信息,请参阅Jeff的答案。

1 个答案:

答案 0 :(得分:16)

您使用的是正确的UIView类方法吗?如果使用+animateWithDuration:delay:options:animations:completion:,则可以指定选项的位掩码。其中一个可能的选项是UIViewAnimationOptionAllowUserInteraction,听起来就像你想要的那样。