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 执行 ActivityIndicator 代码并使用后台线程检索视频。
其他
轻松修复:
我必须从服务器播放 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 执行 ActivityIndicator 代码并使用后台线程检索视频。
其他
轻松修复: