3

我正在关注这个视频: https ://developer.apple.com/videos/play/wwdc2014-503/

所以我做了一个快速演示并尝试添加一个容器视图并将子视图更改为他们展示的 avplayer。然后我添加了代码,虽然形式很快。

不同之处在于prepareForSegue函数中AVPlayer的构造函数我写了以下内容:

playerViewController.player = AVPlayer(URL: 
    NSURL(string: "http://jplayer.org/video/m4v/Big_Buck_Bunny_Trailer.m4v")!)

视频非常宽,发生的情况是视频播放器的一半超出了屏幕 ios模拟器

我尝试了 playerViewController.view.sizeToFit() 并在视频控制器的属性上尝试了所有不同的 videoGravity 设置

(免责声明:我对 IDE 很不好。我通常会避免使用它们,但在 iOS 上似乎是不可能的)

所有代码:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if segue.identifier == "showMovie" {
        NSLog("im in!!");
        //self.view.translatesAutoresizingMaskIntoConstraints = false
        let playerViewController = segue.destinationViewController as! AVPlayerViewController
  //playerViewController.view.translatesAutoresizingMaskIntoConstraints = false;

        //setup player view controller for movie
        playerViewController.player = AVPlayer(URL: NSURL(string: "http://jplayer.org/video/m4v/Big_Buck_Bunny_Trailer.m4v")!)

        playerViewController.view.sizeToFit()

        //playerViewController.showsPlaybackControls = true
        //playerViewController.player?.play();
    }
}

这是故事板的屏幕截图。我不知道这有什么帮助。

在此处输入图像描述

4

1 回答 1

0

我会尝试仅在 segue 中传递视频的 URL。由于在 prepareForSegue 中,您的视图控制器的视图可能没有完全初始化并适合自动布局的屏幕。

所以在你的实际 viewController :

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if segue.identifier == "showMovie" {
        NSLog("im in!!");
        //self.view.translatesAutoresizingMaskIntoConstraints = false
        let playerViewController = segue.destinationViewController as! AVPlayerViewController

    //setup player view controller for movie
    playerViewController.movieURL= "http://jplayer.org/video/m4v/Big_Buck_Bunny_Trailer.m4v"

}

并在 viewWillAppear 中AVPlayerViewController,使用代码

override func viewWillAppear(animated: Bool) {
        super.viewWillAppear(animated);
        //setup player view controller for movie
        playerViewController.player = AVPlayer(URL: NSURL(string: self.movieURL)!)

        playerViewController.view.sizeToFit()
}
于 2016-02-18T08:32:29.260 回答