繁体   English   中英

Swift AVPlayerLayer videoGravity.resizeAspect 只考虑高度而不是宽度

[英]Swift AVPlayerLayer videoGravity .resizeAspect only respects height not width

我有一个 AVPlayer 和 AVPlayerLayer 嵌入在一个简单的 UIView 中。 这会播放电影,但调整playerLayer.videoGravity只会影响电影的相对高度:

  1. .resizeAspect填充到videoview的一侧并裁剪高度
  2. .resizeAspectFill看起来像拉伸后的.resizeAspect的放大版本
    var player = AVPlayer()
    @IBOutlet weak var videoview: UIView!
    override func viewDidAppear(_ animated: Bool) {

        player = AVPlayer(url: url)
        let playerLayer = AVPlayerLayer(player: player)
                
        playerLayer.setAffineTransform(CGAffineTransform(rotationAngle: CGFloat((-90 * Double.pi)/180)))
                                       
        playerLayer.frame = videoview.bounds
        playerLayer.videoGravity = .resizeAspect

        videoview.layer.addSublayer(playerLayer)     
        
        player.play()
    }

这里的问题是playerLayer.setAffineTransform(CGAffineTransform(rotationAngle: CGFloat((-90 * Double.pi)/180)))和视频/图像大小。 之前使用了错误的高度/宽度(并且需要转置)。 这解决了这个问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM