AVPlayer 内容模式
AVPlayer Content Modes
我有一个 AVPlayer,我将它用作我的 UIView 中的背景作为美学。为了初始化和实例化它,我做了
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
guard let path = Bundle.main.path(forResource: "Background", ofType:"mp4") else {
debugPrint("Background.mp4 not found")
return
}
let player = AVPlayer(url: URL(fileURLWithPath: path))
let playerLayer = AVPlayerLayer(player: player)
playerLayer.frame = self.view.bounds
player.actionAtItemEnd = .none
player.volume = 0.0
//chage content mode ** TODO **
self.view.layer.addSublayer(playerLayer)
player.play()
}
当我 运行 这样做时,视频按预期播放,但是 AVPlayer 将内容模式默认设置为 fitToWidth
。我在 player
和 playerLayer
的所有方法中搜索了某种更改内容类型的方法,但无济于事。
我想要的不是fitToWidth
我想要fitToHeight
.
有什么想法吗?感谢观看!
我能想到一些非常简单的方法来做到这一点。当您的视频内容被获取时,使用 AVPlayerLayer 中的 videoRect 方法来提取视频图像的帧。然后根据图像的大小调整视图大小,使高度达到您想要的程度,宽度是视频高度与视图高度之比的比例。
我有一个 AVPlayer,我将它用作我的 UIView 中的背景作为美学。为了初始化和实例化它,我做了
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
guard let path = Bundle.main.path(forResource: "Background", ofType:"mp4") else {
debugPrint("Background.mp4 not found")
return
}
let player = AVPlayer(url: URL(fileURLWithPath: path))
let playerLayer = AVPlayerLayer(player: player)
playerLayer.frame = self.view.bounds
player.actionAtItemEnd = .none
player.volume = 0.0
//chage content mode ** TODO **
self.view.layer.addSublayer(playerLayer)
player.play()
}
当我 运行 这样做时,视频按预期播放,但是 AVPlayer 将内容模式默认设置为 fitToWidth
。我在 player
和 playerLayer
的所有方法中搜索了某种更改内容类型的方法,但无济于事。
我想要的不是fitToWidth
我想要fitToHeight
.
有什么想法吗?感谢观看!
我能想到一些非常简单的方法来做到这一点。当您的视频内容被获取时,使用 AVPlayerLayer 中的 videoRect 方法来提取视频图像的帧。然后根据图像的大小调整视图大小,使高度达到您想要的程度,宽度是视频高度与视图高度之比的比例。