gpt4 book ai didi

ios - Swift:调整 AVPlayerLayer 的大小以匹配其父容器的边界

转载 作者:搜寻专家 更新时间:2023-10-30 22:05:12 36 4
gpt4 key购买 nike

我使用 AVPlayerAVPlayerLayer(Swift,iOS 8.2)播放本地视频,我需要调整 AVPlayerLayer 的大小(introPlayerLayer) 当其父 View (introView) 调整大小时,包括方向更改。到目前为止,我所尝试的一切似乎都不起作用,而且 playerLayer 的大小和位置不正确。

AVPlayer 使用本地 mp4 视频设置,AVPlayerLayer 使用该播放器初始化。然后该图层作为子图层添加到父 View 。

这是我的代码:

func playIntro() {
let path = NSBundle.mainBundle().pathForResource("intro", ofType: "mp4")
let url = NSURL.fileURLWithPath(path!)
let introPlayer = AVPlayer(URL: url)
introPlayer.allowsExternalPlayback = false

var introPlayerLayer = AVPlayerLayer(player: introPlayer)
introView.layer.addSublayer(introPlayerLayer)
introPlayerLayer.frame = introView.bounds

NSNotificationCenter.defaultCenter().addObserver(self, selector: "playerDidFinishPlaying:", name: AVPlayerItemDidPlayToEndTimeNotification, object: introPlayer.currentItem)

introView.hidden = false
introPlayer.play()
}

我应该将 AVPlayerLayer 添加为 UIView 的子层,还是应该子类化父容器 (UIView),如图所示在 https://developer.apple.com/library/ios/documentation/AudioVideo/Conceptual/AVFoundationPG/Articles/02_Playback.html 的“玩家 View ”部分.如果是这样,我将如何在 Swift 中编写 PlayerView 子类(在 Objective-C 中显示)?预先感谢您的任何帮助。

最佳答案

swift 3。

private func playVideo() {
guard let path = Bundle.main.path(forResource: "video", ofType:"mp4") else {
debugPrint("video.m4v not found")
return
}
let player = AVPlayer(url: URL(fileURLWithPath: path))
var playerLayer: AVPlayerLayer?
playerLayer = AVPlayerLayer(player: player)
playerLayer?.videoGravity = AVLayerVideoGravityResizeAspectFill
playerLayer!.frame = self.view.frame
self.view!.layer.addSublayer(playerLayer!)
player.play()

}

关于ios - Swift:调整 AVPlayerLayer 的大小以匹配其父容器的边界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29000251/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com