我需要使用 Platform View 來顯示適用于 ios 的原生視頻播放器 AVPlayer。當我轉到 VideoPlayerPlatformView 頁面時,模擬器上出現黑屏。如何正確添加viewDidLoad()到我的代碼中?
import UIKit
import Flutter
import AVKit
import AVFoundation
public class VideoView: NSObject, FlutterPlatformView {
let frame: CGRect
var _view: UIView
init(
frame: CGRect,
viewIdentifier viewId: Int64,
arguments args: Any?,
binaryMessenger messenger: FlutterBinaryMessenger?
) {
_view = UIView()
self.frame = frame
super.init()
createNativeView(view: _view)
}
public func view() -> UIView {
return _view
}
func createNativeView(view _view: UIView){
override func viewDidLoad() {
super.viewDidLoad()
preparePlayer()
}
}
private func preparePlayer() {
let url = URL(string: "link")
let player = AVPlayer(url: url!)
let playerLayer = AVPlayerLayer(player: player)
playerLayer.frame = self._view.bounds
self._view.layer.addSublayer(playerLayer)
player.play()
}
}
uj5u.com熱心網友回復:
您不小心將一個函式嵌套在另一個函式中:
func createNativeView(view _view: UIView){
override func viewDidLoad() {
super.viewDidLoad()
preparePlayer()
}
}
你想要的是:
override func viewDidLoad() {
super.viewDidLoad()
preparePlayer()
}
但它仍然會報告錯誤,因為您是從 派生的NSObject,并且該類沒有viewDidLoad您可以覆寫的函式。A UIViewControllerorNSViewController確實如此。
在您的原始代碼中,您創建了一個函式createNativeView。在其中,您創建了一個新函式viewDidLoad。你可以這樣做,但是這個內部函式與一個類中可能存在的同名函式完全無關。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/495029.html
上一篇:呼叫實體方法'append'沒有完全匹配:Swift
下一篇:[UINavigationControllerselectedIndex]:發送到UITabBarController實體的無法識別的選擇器
