活动指示器在iOS中不工作?

活动指示器在iOS中不工作?,ios,objective-c,uiactivityindicatorview,Ios,Objective C,Uiactivityindicatorview,我必须从服务器播放视频,这需要一些时间。所以我写了一个activityIndicator并开始制作动画。但在视频播放之前,活动指示器不会显示。首先,我隐藏了活动指示器,后来取消隐藏并开始制作动画,但它会在视频开始播放时显示 这是我的密码: 对于信息indicatorView是一个UIView,而我已经indView是UIView内部的一个UIIndicatorView;我用AV播放器玩 请阅读清楚,指示器视图显示在视图中,但问题不是在我说开始动画时显示,而是在视频启动一段时间后显示 indi

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

这是我的密码: 对于信息
indicatorView是一个UIView
,而我已经
indView是UIView内部的一个UIIndicatorView
;我用AV播放器玩

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

  indicatorView.hidden = NO;
  [indView startAnimating];
//在这里,指示器视图必须显示在视图中,但它不显示

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

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

我在这两个地方都使用了dispach asynch,但没有任何用处

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

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

更改<代码>[playerModel playMyVideo:item]


[playerModel performSelector:@selector(playMyVideo:)with object:item afterDelay:0.0001f in modes:@[nsrunlopCommonModes]]

只需添加一个方法

-(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执行ActivityIndicator代码,并使用后台线程检索视频

其他

简易修复:


使用此

请更改指示器视图的颜色。它可能是白色的,因此您无法识别它。您正在使用哪个播放机播放视频?正在使用AVPlayer解释为什么它不工作需要了解线程如何工作。我很高兴应您的要求解释这一点,但如果您只是想寻找一个快速解决方案,请查看:哈哈哈比您快了1秒正是:D您应该像我在代码中那样使用
inModes:@[nsrunlopCommonModes]
参数,否则某些UI元素(例如UIScrollView)在您的3秒钟延迟期间不会变得难以处理。还有,为什么要使用3秒延迟而不是0.0001秒延迟?是的,我们可以按照您在回答中提到的那样使用。已尝试但不起作用。。。当玩家完成了它的执行,Gui调度就有了它的时间。我不愿意添加任何第三方,但无论如何,谢谢你。因为我的客户不想要第三个parties@SUDHAKARRAYAPUDI什么?这与被接受的答案相同,只是我先发布了它。这是如何工作有时但不是所有的时间,但你接受了一个答案张贴在我之后,与相同的代码,但神奇的工作所有的时间?嘿,真的我不知道。但不知何故,他的代码运行良好,但您的代码有时并不是一直运行……可能是因为他添加了额外的方法。但是因为你的贡献,我投了赞成票。你否决了我的问题…我不介意。但是thanks@SUDHAKARRAYAPUDI添加方法名根本不会影响代码。如果“有时工作,但不是一直工作”是一个有效的说法,我真的不敢相信,但如果是这样,那么你需要在你的应用程序上做更多的测试,因为他的代码也会再次失败,因为它与我的完全相同。。。
   indicatorView.hidden = NO;
  [indView startAnimating];
  [self performSelector:@selector(videoPrepareToPlay) withObject:nil afterDelay:0.2];