

swiftで画面回転時にあるUIView(view1)のサイズがconstraintにより変更します。  
しかし、そのUIViewにaddSublayerで追加したAVPlayerLayerのサイズが自動的に変更しません。

[code]

    // 下記、ソースの一部
    // Viewを生成.
    let videoPlayerView = AVPlayerView(frame: view1.bounds)
    // UIViewのレイヤーをAVPlayerLayerにする.
    let layer = videoPlayerView.layer as! AVPlayerLayer
    layer.videoGravity = AVLayerVideoGravity.resizeAspect
    layer.player = videoPlayer
    // レイヤーを追加する.
    view1.layer.addSublayer(layer)
    
[/code]

上記ソースのlayerをUIview(view1)が変わったら変更させたいと思っています。画面回転時は、

[code]

    override var shouldAutorotate: Bool {}
    override var supportedInterfaceOrientations: UIInterfaceOrientationMask {}
    
[/code]

で処理できると思いますが、addSubLayerで追加したAVPlayerLayerのサイズはどうやって変更させたらいいのでしょうか？

ご存知の方、ご教示お願いします。


CC BY-SA 4.0
2018-12-23T14:11:18.237
51460
2018-12-23T21:30:08.337
8593
question
swift
画面回転時にUIViewのサイズ変更に伴いaddSublayerしたAVPlayerLayerもサイズ変更するには


上記ソースだと、`AVPlayerView`の`layer`プロパティは`videoPlayerView`に紐付いているのではないでしょうか？

なので、わざわざレイヤーだけを取り出して`addSubLayer`せずに、素直に`view1`に`addSubView`して、上下左右の`NSLayoutConstraint`を作成、適用するか、`InterfaceBuilder`で`view1`に`AVPlayerView`を`view1`と同じサイズにAutoLayoutを設定して`@IBOutlet`にすればいい気がします(`view1`がそもそも`AVPlayerView`でも問題無いならそのほうがいい気もします)


CC BY-SA 4.0
2018-12-23T21:30:08.337
51465
2018-12-23T21:30:08.337
14745
51460
answer