因为这是我的第一篇文章,只是关于我的几句话:通常我设计的东西(主要是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)
}
答案 0 :(得分:5)
showsPlaybackControls
是AVPlayerViewController
的属性,因此您可以在创建后设置它:
playerController.showsPlaybackControls = false
如果您只想允许横向广告,您可以继承AVPlayerViewController
,覆盖supportedInterfaceOrientations
并仅返回横向广告,然后使用该类而不是AVPlayerViewController
。
<强>更新强>
如评论中所述,如果您转到AVPlayerViewController
的文档,您会发现一条警告:
不要继承AVPlayerViewController。覆盖此类的方法不受支持,并导致未定义的行为。
他们可能不希望您覆盖可能干扰行为的与播放相关的方法,我会说只覆盖 supportedInterfaceOrientations
是安全的。
但是,如果您想要一个替代解决方案,您可以创建自己的视图控制器类来覆盖supportedInterfaceOrientations
以仅返回格局,并将AVPlayerViewController
放在该视图中控制器。