我遇到了问题,到目前为止找不到好的解决方案。
经过一些特定的操作后,我想用动画改变我的self.view的背景颜色。所以我做了这样的事情:
[UIView animateWithDuration:5.0 delay:0.0 options:UIViewAnimationOptionCurveEaseOut animations:^{
self.view.backgroundColor = [UIColor orangeColor];
} completion:^(BOOL finished) {
self.backgroundColor = self.view.backgroundColor;
}];
我希望这个动画既慢又简单,这就是为什么它可以在 3-5 秒内完成,而不仅仅是一个快速切换到另一个。
问题是,如果我在主线程上制作它,它会让我的应用程序在动画执行时在这 3-5 秒内完全无响应。如果我在后台线程上制作它,我会遇到很多问题,这是意料之中的。
有什么好的解决方案如何在不冻结屏幕的情况下用动画慢慢更新背景颜色?
谢谢!
您需要
使用UIViewAnimationOptionAllowUserInteraction
选项而不是UIViewAnimationOptionCurveEaseOut
来允许用户交互。
[UIView animateWithDuration:5.0 delay:0.0 options:UIViewAnimationOptionAllowUserInteraction animations:^{
self.view.backgroundColor = [UIColor orangeColor];
} completion:^(BOOL finished) {
self.backgroundColor = self.view.backgroundColor;
}];