Iphone 如何使“-[MPMoviePlayerController backgroundView]”立即显示?
当前我的Iphone 如何使“-[MPMoviePlayerController backgroundView]”立即显示?,iphone,uikit,mpmovieplayercontroller,Iphone,Uikit,Mpmovieplayercontroller,当前我的-[MPMoviePlayerController backgroundView]在电影加载足够的内容之前不会显示。因此,我放在那里的UIActivityIndicatorView不会立即出现。这让我发疯。找到的唯一解决方案是将重复的指示器视图放置在背景视图和-[MPMoviePlayerController视图]之间的某个位置。但这看起来并不正常,而且肯定是一种视图层次结构黑客,不能保证正常工作。如果背景视图立即显示,所有视图都将神奇地工作 如何在加载电影之前立即创建背景视图?我不确定
-[MPMoviePlayerController backgroundView]
在电影加载足够的内容之前不会显示。因此,我放在那里的UIActivityIndicatorView
不会立即出现。这让我发疯。找到的唯一解决方案是将重复的指示器视图放置在背景视图和-[MPMoviePlayerController视图]
之间的某个位置。但这看起来并不正常,而且肯定是一种视图层次结构黑客,不能保证正常工作。如果背景视图立即显示,所有视图都将神奇地工作
如何在加载电影之前立即创建背景视图?我不确定,但可能会对您有所帮助不要使用背景视图,而是使用moviecontroller本身的视图 以下步骤(假设您的
mpmoviecontroller
实例被调用moviePlayerController
,您的UIActivityIndicatorView
实例被调用activityIndicatorView
)
- 将UIActivityIndicatorView添加到MPMoviePlayerController视图的顶部(例如,
)[moviePlayerController.view addSubview:activityIndixatorView];
- 开始设置活动指示器的动画
- 注册MPMoviePlayerLoadStateDidChangeNotification
- 在上述通知的处理程序中,注意
moviePlayerController.loadState&MPMovieLoadStatePlayable==MPMovieLoadStatePlayable
- 如果符合上述条件,则隐藏活动指示器
MPMoviePlayerLoadStateDidChangeNotification
通知发出得太早或太迟,因此活动指示器将在视频显示之前消失。对于慢速连接,时间间隔太长。所以我不能用这种方式:(这很奇怪…但是你可以用MPMoviePlayerPlayerBackstateDidChange来代替或另外使用MPMoviePlayerLoadStateDidChangeNotification来隐藏活动指示器。正如我在@Till回答的评论中提到的,解决方案无法解决这个问题。。。