我有一个按钮,它提出了AVPlayerViewController
和我设法添加图片在pciture到我的AVPlayerViewController,所以我可以最小化它,现在一旦最小化,我想最大化它再次,但只要我这样做的AVPlayerViewController
消失。我不打算使用故事板,我想通过编程来实现,因为在导航控制器中嵌入视图控制器可以解决这个问题,但我不想遵循这种方法
我添加了BackgroundMode
功能,并在Appdelegate中勾选了PIP
和
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
let audioSession = AVAudioSession.sharedInstance()
do {
try audioSession.setCategory(.playback)
try audioSession.setActive(true, options: [])
} catch {
print("Setting category to AVAudioSessionCategoryPlayback failed.")
}
return true
}
我的ViewController
class ViewController: UIViewController,AVPlayerViewControllerDelegate {
var playerController : AVPlayerViewController!
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func btnClicked(_ sender: Any) {
if let videoURL = URL(string: "https://storage.googleapis.com/exoplayer-test-media-0/BigBuckBunny_320x180.mp4") {
let player = AVPlayer(url: videoURL)
playerController = AVPlayerViewController()
NotificationCenter.default.addObserver(self, selector: #selector(ViewController.didfinishPlaying(note:)), name: NSNotification.Name.AVPlayerItemDidPlayToEndTime, object: player.currentItem)
playerController.player = player
playerController.allowsPictureInPicturePlayback = true
playerController.delegate = self
playerController.player?.play()
self.present(playerController, animated: true, completion : nil)
}
}
}
只是为了创建一个简单的演示,我使用了storyboard
,在我真实的的应用程序中我不使用它
1条答案
按热度按时间sz81bmfz1#
上面的代码在没有
NavigationController
的情况下也可以工作