我要从服务器播放视频,这需要一些时间。所以我写了一个activityIndicator并开始动画。但是直到视频播放时,活动指示器才会显示。冷杉我隐藏活动指示器后来取消隐藏它并开始制作动画,但是当视频开始播放时显示它。
这是我的代码:
获取信息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秒后,当视频准备播放时,它正在显示
问题是什么 我在两个地方都使用过异步,但没有用
答案 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执行ActivityIndicator代码,并使用后台线程检索视频。
<强> ELSE 强>
简易修复: