2017-11-02 3 views
0

Ich habe eine UIview, in die ich einen AVPlayer einbettle. Jetzt, wenn ich es spiele, scheint es irgendwie nicht die ganze UIview abzudecken. Unten ist der Code:Größenanpassung des Player-Fensters

@IBOutlet weak var introVideo: UIView! 

var player: AVPlayer! 

func playIntro() { 

    if let moviePath = Bundle.main.path(forResource: "intro", ofType: "mp4") { 
     let movieURL = URL(fileURLWithPath: moviePath) 
     player = AVPlayer(url: movieURL) 
     let playerLayer = AVPlayerLayer() 
     playerLayer.player = player 
     playerLayer.frame = introVideo.bounds 
     playerLayer.backgroundColor = UIColor.clear.cgColor 
     player.actionAtItemEnd = .none 
     playerLayer.videoGravity = AVLayerVideoGravityResizeAspect 
     introVideo.layer.addSublayer(playerLayer) 
     player.play() 
     NotificationCenter.default.addObserver(self, 
               selector: #selector(playerItemDidReachEnd(notification:)), 
               name: NSNotification.Name.AVPlayerItemDidPlayToEndTime, 
               object: player.currentItem)  } 
} 

es wie folgt angezeigt:

enter image description here

wie behebe ich dieses

+0

Versuchen Sie es mit 'AVLayerVideoGravityResizeAspectFill' statt' AVLayerVideoGravityResizeAspect' –

+0

, die versucht. Kein Glück –

+0

Es macht Sinn, einen Grund für den Downvote zu hinterlassen, sonst ist es ein dummer Schachzug –

Antwort

0

ich es gelöst. Ich habe diese Funktion in viewDidLoad() aufgerufen, aber es war irgendwie die Ansicht auf jeder Ladung zu aktualisieren. Also, aus diesem Grund sollten die Grenzen in viewDidLayoutSubviews() aktualisiert werden

override func viewDidLayoutSubviews() { 
    super.viewDidLayoutSubviews() 
    playIntro() 
} 
Verwandte Themen