活动指示器在iOS中不起作用?

时间:2015-10-19 07:29:10

标签: ios objective-c uiactivityindicatorview

我要从服务器播放视频,这需要一些时间。所以我写了一个activityIndi​​cator并开始动画。但是直到视频播放时,活动指示器才会显示。冷杉我隐藏活动指示器后来取消隐藏它并开始制作动画,但是当视频开始播放时显示它。

这是我的代码: 获取信息indicatorView is a UIView,我在UIView内部indView is an UIIndicatorView;我正在使用AV播放器播放;

请明确阅读指示器视图显示在视图中,但是当我说开始动画但是在视频启动一段时间后问题没有出现。

  indicatorView.hidden = NO;
  [indView startAnimating];

//此处指标视图必须显示在VIEW中,但它没有显示;

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

//现在在5秒后,当视频准备播放时,它正在显示

问题是什么 我在两个地方都使用过异步,但没有用

4 个答案:

答案 0 :(得分:2)

  

我在两个地方都使用过调度异步但没有用

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

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

答案 1 :(得分:2)

PUT更改为

[playerModel playMyVideo:item];

答案 2 :(得分:2)

只需添加一个方法,例如

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

并调用该方法,如

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

它可能对你有用..

答案 3 :(得分:1)

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

<强> ELSE

简易修复:

使用此https://github.com/jdg/MBProgressHUD