AVPlayer Swift:如何隐藏控件并禁用横向视图?

时间:2016-06-17 07:31:47

标签: ios xcode swift

因为这是我的第一篇文章,只是关于我的几句话:通常我设计的东西(主要是UI),但我真的想通过编程来实现更好地理解你们。所以我决定构建一个小应用程序来开始。

所以我一直试图解决这个问题几个小时 - 这是我的第一个应用项目,所以我为我的新见道歉。

我想要做的就是隐藏AVPlayer的控件并禁用横向视图,但我无法确定放置showsPlaybackControls = false的位置。

import UIKit
import AVKit
import AVFoundation


class ViewController: UIViewController {


    private var firstAppear = true

    override func viewDidAppear(animated: Bool) {
        super.viewDidAppear(animated)
        if firstAppear {
            do {
                try playVideo()
                firstAppear = false
            } catch AppError.InvalidResource(let name, let type) {
                debugPrint("Could not find resource \(name).\(type)")
            } catch {
                debugPrint("Generic error")
            }

        }
    }

    private func playVideo() throws {
        guard let path = NSBundle.mainBundle().pathForResource("video", ofType:"mp4") else {
            throw AppError.InvalidResource("video", "m4v")
        }
        let player = AVPlayer(URL: NSURL(fileURLWithPath: path))
        let playerController = AVPlayerViewController()
        playerController.player = player
        self.presentViewController(playerController, animated: false) {
            player.play()
        }
    }
}

enum AppError : ErrorType {
    case InvalidResource(String, String)
}

1 个答案:

答案 0 :(得分:5)

showsPlaybackControlsAVPlayerViewController的属性,因此您可以在创建后设置它:

playerController.showsPlaybackControls = false

如果您只想允许横向广告,您可以继承AVPlayerViewController,覆盖supportedInterfaceOrientations并仅返回横向广告,然后使用该类而不是AVPlayerViewController

<强>更新

如评论中所述,如果您转到AVPlayerViewController的文档,您会发现一条警告:

  

不要继承AVPlayerViewController。覆盖此类的方法不受支持,并导致未定义的行为。

他们可能不希望您覆盖可能干扰行为的与播放相关的方法,我会说只覆盖 supportedInterfaceOrientations是安全的。

但是,如果您想要一个替代解决方案,您可以创建自己的视图控制器类来覆盖supportedInterfaceOrientations以仅返回格局,并将AVPlayerViewController放在该视图中控制器。