我一直在玩弄UIView
动画的两种不同方式:开始/提交和阻止。
我注意到beginAnimations:context:
/ commitAnimations
处理方式非常异步,在动画运行时保持UI自由。
但是,我也注意到animateWithDuration:animations:completion
方式似乎阻止了UI,使动画运行时没有响应。
我认为使用块的一个要点是轻松实现异步执行。为什么UIView
动画的块变体会阻止UI,而开始/提交变体却没有?
修改
我的问题最初假设块动画是同步操作并阻止了UI。从Jeff Kelly的回答中可以看出,事实并非如此。我原来的假设不正确,块动画不同步。有关详细信息,请参阅Jeff的答案。
答案 0 :(得分:16)
您使用的是正确的UIView
类方法吗?如果使用+animateWithDuration:delay:options:animations:completion:
,则可以指定选项的位掩码。其中一个可能的选项是UIViewAnimationOptionAllowUserInteraction
,听起来就像你想要的那样。