代码之家  ›  专栏  ›  技术社区  ›  Seva Alekseyev

在主线程忙时运行uiActivityIndicatorView

  •  5
  • Seva Alekseyev  · 技术社区  · 14 年前

    当主线程执行长时间操作时,是否有方法显示动画旋转轮?动画由创建uiActivityIndicatorView的同一线程处理,对吗?如果是这样,属于多个线程的视图能否位于同一视图层次结构中?

    所有其他的失败,我不介意将一个冗长的操作本身移动到一个后台线程中,但是在它运行时,我必须以某种方式冻结UI。我不知道该怎么做。

    编辑:第一代设备上的“冗长”约为2秒。

    2 回复  |  直到 14 年前
        1
  •  9
  •   Ed Marty    14 年前

    解决方案是在运行冗长的操作之前,至少通过运行循环启动动画一次迭代。例如:

    [activity startAnimating];
    [self performSelector:@selector(lengthyOperation) withObject:nil afterDelay:0];
    

    你不必使用 performSelector 方法,只是设置要运行的方法 后来 所以活动指示器有机会在你忙之前开始设置动画。

        2
  •  6
  •   marcc    14 年前

    正确的答案肯定是将纵向操作移到后台线程,并在完成后让它与主线程通信。如果你不知道怎么做,继续读下去 NSOperationQueue NSInvocationOperation . 你的应用程序和你的用户会感谢你花最少的时间来学习。