我希望能够在嵌入式浏览器全屏播放HTML视频时保留对接管屏幕的AVPlayer
实例的引用。我的第一个方法是:
extension AVPlayerViewController {
override public func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
print("herezzzzzzzzzzzzzzzzzzzzzzzzzzz") // prints correctly
print(self.player) // prints nil
}
}
然而它总是返回零。所以我正在尝试不同的方法。我想覆盖AVPlayer的初始值设定项或play
方法,但如果没有客观的c选择器冲突,我似乎无法做到。
import AVKit
import MediaPlayer
extension AVPlayer {
override func play() { // this doesn't work. just an example of what i want
super.play()
print("do stuff here")
}
}
有没有办法覆盖AVPlayer的一个实例方法,所以我可以存储对self
的引用?或者它甚至不是AVPlayer?
答案 0 :(得分:1)
您无法覆盖扩展程序中的方法。或者更确切地说,编译器允许您这样做,但它不起作用。请参阅此主题:Overriding methods in Swift extensions
你也不应该继承AVPlayerViewController
。
为什么你不能只读取创建它的类中的AVPlayerViewController
player
属性?
答案 1 :(得分:1)
“用于在UIWebView中播放视频内容的最重要的类称为MPAVController和UIMoviePlayerController”。所以你无法获得AVPlayer的实例。
请查看此问题:How to receive NSNotifications from UIWebView embedded YouTube video playback了解更多详情。