Activity 指标在 iOS 中不起作用?

Activity indicator not working in iOS?

我必须从服务器播放 A 视频,这需要一些时间。所以我写了一个 activityIndicator 并开始制作动画。但是 activity 指示器在视频播放之前不会出现。首先,我隐藏了 activity 指示器,后来取消隐藏它并开始制作动画,但它在视频开始播放时显示。

这是我的代码: 有关信息 indicatorView is a UIView 并且我在 UIView 中有 indView is an UIIndicatorView;我正在使用 AV Player 播放;

请清楚地阅读指示器视图显示在视图中,但问题不是在我说开始动画时出现,而是在视频开始一段时间后出现。

  indicatorView.hidden = NO;
  [indView startAnimating];

//此处Indicator view必须显示在VIEW中但是没有显示;

  MediaItem *item = [allVideos objectAtIndex:indexPath.row];
  [playerModel playMyVideo:item];

// 现在 5 秒后,当视频准备好播放时,它出现了

这是什么问题。 我在这两个地方都使用了 dispach asynch 但没有用

I've used dispach asynch in both the places but no use

但是这段代码是 运行 在主线程上吗? UI 更新应该在主线程上执行。

dispatch_async(dispatch_get_main_queue(), ^{
    //UI code
});

[playerModel playMyVideo:item];改为

[playerModel performSelector:@selector(playMyVideo:) withObject:item afterDelay:0.0001f inModes:@[NSRunLoopCommonModes]];

只需添加一种方法,例如

-(void) videoPrepareToPlay {
    MediaItem *item = [allVideos objectAtIndex:indexPath.row];
    [playerModel playMyVideo:item];
}

并像这样调用该方法,

   indicatorView.hidden = NO;
  [indView startAnimating];
  [self performSelector:@selector(videoPrepareToPlay) withObject:nil afterDelay:0.2];

它可能适合你..

使用 performSelectorOnMainThread 执行 ActivityIndi​​cator 代码并使用后台线程检索视频。

其他

轻松修复:

使用这个https://github.com/jdg/MBProgressHUD