有没有办法在主线程进行长时间操作时显示动画纺车?动画由创建 UIActivityIndicatorView 的同一线程处理,对吧?如果是这样,属于多个线程的视图可以位于同一视图层次结构中吗?
所有其他方法都失败了,我不介意将冗长的操作本身移动到后台线程中,但是我必须在 UI 运行时以某种方式冻结它。我不知道该怎么做。
编辑:“冗长”在第一代设备上约为 2 秒。
有没有办法在主线程进行长时间操作时显示动画纺车?动画由创建 UIActivityIndicatorView 的同一线程处理,对吧?如果是这样,属于多个线程的视图可以位于同一视图层次结构中吗?
所有其他方法都失败了,我不介意将冗长的操作本身移动到后台线程中,但是我必须在 UI 运行时以某种方式冻结它。我不知道该怎么做。
编辑:“冗长”在第一代设备上约为 2 秒。
解决方案是在运行冗长的操作之前通过运行循环至少启动一次动画迭代。例如:
[activity startAnimating];
[self performSelector:@selector(lengthyOperation) withObject:nil afterDelay:0];
您不必使用该performSelector
方法,只需通过某种方式将该方法设置为稍后运行,以便活动指示器有机会在您忙碌之前开始制作动画。
正确的答案肯定是将冗长的操作移至后台线程,并在完成后与主线程通信。如果您不知道如何执行此操作,请继续阅读NSOperationQueue
和NSInvocationOperation
。您的应用程序和您的用户会感谢您花费最少的时间来学习。