2015-10-19 35 views
2

我必须播放来自服务器的视频,它需要一些时间。所以我写了一个activityIndi​​cator并开始动画。但活动指示器在视频播放前不显示。冷杉我隐藏的活动指标后来不隐藏它,并开始动画,但它显示视频开始播放时。活动指标不适用于iOS?

这里是我的代码: 的信息indicatorView is a UIView和我indView is an UIIndicatorView里面的UIView;我正在使用AV Player播放;

请阅读显然,指标视图显示在视图中,但问题没有显示出来时,我说开始动画,但一段时间后视频开始。

indicatorView.hidden = NO; 
    [indView startAnimating]; 

//在这里,在视图中显示指示器视图必须,但它没有显示出来;

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

//现在经过5秒时,这里是视频准备播放它显示了

有什么问题。 我用在这两个地方dispach非同步,但没有用

+0

请更改指标视图的颜色。可能是白色的,所以你不能识别它。 –

+0

您正在使用哪个播放器播放视频? – abhi1992

+0

AVPlayer正在使用 –

回答

2

只需添加一个方法类似,

-(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]; 

它可能适合你..

+1

哈哈哈1秒击败你到底:d http://stackoverflow.com/a/33209052/2057171 –

+2

你应该使用'inModes:@ [NSRunLoopCommonModes]'喜欢我的参数在我的代码做否则某些UI元素(例如UIScrollView)在您的3秒延迟期间不会变得棘手。另外为什么使用3秒的延迟而不是0.0001秒的延迟? –

+1

是的,我们可以在您的答案中提及您。 – jigs

2

我用dispach非同步在两个地方,但没有用

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

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

尝试过,但无法正常工作... Gui派发是当玩家完成执行时得到了它的时间 –

2

变化[playerModel playMyVideo:item];

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

+1

@SUDHAKARRAYAPUDI是什么?除了我先发布之外,这与接受的答案相同。这是如何,但有时不工作,所有的时间,但你接受了我的后贴有相同的代码的答案,但神奇地运行所有的时间? –

+0

嘿,我真的不知道。但不知何故,他的代码工作正常,但你的工作有时不是所有的时间......可能是因为他添加了额外的方法。但是我已经投票了,因为你的贡献。你投下了我的问题......我没关系。但由于 –

+0

@SUDHAKARRAYAPUDI添加一个方法名称完全不影响的代码。如果“有时但不是所有的工作时间”是一个有效的声明,我真的无法相信它是,但如果是,那么你需要做你的应用程序更多的测试,因为它会与他的代码再次失败为好,因为它等同于我的... –

1

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

ELSE

简易修复:

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

+0

我不愿意添加任何第三方,但我还是谢谢你 –

+0

@SUDHAKARRAYAPUDI为什么?????????????????????????????? –

+0

嘿阿尔伯特普通人。因为我的客户不想要任何第三方 –