AVPlayer
およびAVPlayerLayer
(Swift、iOS 8.2)を使用してローカル ビデオを再生しています。向きの変更を含め、親ビュー ( ) のサイズが変更されたときにAVPlayerLayer
( ) のサイズを変更する必要があります。これまでのところ、私が試したものは何も機能していないようで、サイズと位置が間違っています。introPlayerLayer
introView
playerLayer
はAVPlayer
ローカルの mp4 ビデオを使用してセットアップされ、AVPlayerLayer
はそのプレーヤーを使用して初期化されます。次に、レイヤーがサブレイヤーとして親ビューに追加されます。
これが私のコードです:
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()
}
https://developer.apple.com/library/ios/documentation/AudioVideo/の「The Player View」セクションに示されているように、AVPlayerLayer
のサブレイヤーとして を追加するUIView
か、親コンテナー ( ) をサブクラス化する必要があります。 Conceptual/AVFoundationPG/Articles/02_Playback.html . もしそうなら、Swift でそのサブクラス (Objective-C に示されている) をどのように記述しますか? よろしくお願いいたします。UIView
PlayerView