在热点时全屏调整窗口大小时AVPlayer崩溃

时间:2016-10-23 12:51:26

标签: ios swift avplayer avplayerviewcontroller hotspot

我在应用上编码,用户可以观看各种各样的视频。我在按钮点击时全屏打开视频,用户可以使用播放控件来调整窗口大小。我遇到的问题是当用户通过热点共享他的互联网时,应用程序顶部有一个蓝色条。此时调整窗口大小会导致AVKit框架崩溃(我相信)。使用Swift 2.3,Xcode 7.3.1。我的手机iPhone 6s使用的是iOS 10,我也在iOS 9 iPhone 6 Plus上尝试过,同样的问题。

崩溃:

Terminating app due to uncaught exception 'UIViewControllerHierarchyInconsistency', reason: 'child view controller:<AVFullScreenPlaybackControlsViewController: 0x102933000> should have parent view controller:<AVPlayerViewController: 0x10212d800> but actual parent is:<AVFullScreenViewController: 0x10884d900>'

我的代码:

private let playerController = AVPlayerViewController()
private var player: AVPlayer!

private func playVideo(media: Media) {

        player = AVPlayer(URL: NSURL(string: media.url)!)
        playerController.player = player

        presentViewController(playerController, animated: true, completion: {
            self.playerController.player?.play()
            self.playerController.delegate = self
        })

    }

如果我不通过手机分享我的互联网(因此没有蓝条),那么它运行正常,没有任何问题。有人设法隐藏这个蓝色条,或遇到过类似的问题吗?

2 个答案:

答案 0 :(得分:4)

我已通过此代码修复了它:

@interface YourAVPlayerViewController : AVPlayerViewController
@end

@implementation YourAVPlayerViewController

 - (BOOL)prefersStatusBarHidden {
        return YES;
 }

@end

答案 1 :(得分:0)

我为AVPlayerViewController写了一个小扩展程序来修复应用程序范围内的问题:

// AVPlayerViewController.swift

import AVKit

extension AVPlayerViewController {

  // fixes app crash while using personal hotspot + watching a full screen video
  override open var prefersStatusBarHidden: Bool {
    return true
  }

}