首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >videoGravity resizeAspectFill不工作-斯威夫特- AVFoundation

videoGravity resizeAspectFill不工作-斯威夫特- AVFoundation
EN

Stack Overflow用户
提问于 2020-07-12 13:34:42
回答 1查看 1.1K关注 0票数 2

我在UIView中显示一个视频,一切都很好,视频层边界与嵌入它的UIView是相同的。

问题是视频不能正确地显示在视图的边界内,我只能看到其中的一部分(准确地说是中心)。

所以我搜索了一下,发现AVPlayerLayer有一个属性可以解决这个问题:.videoGravity

我用.resizeAspectFill实现了它,但是它没有改变任何东西。

以下是代码:

代码语言:javascript
运行
复制
 class PlaceHolderVideoView : UIView{

  var player = AVPlayer()
  var playerLayer = AVPlayerLayer()
  let containerImageView = UIImageView(image: #imageLiteral(resourceName: "VideoContainerView"), contentMode: .scaleAspectFit)



override init(frame: CGRect) {
super.init(frame: frame)

setUpUI()

setUpPlayer()



}

required init?(coder: NSCoder) {
    fatalError("init(coder:) has not been implemented")
}

fileprivate func setUpUI(){
clipsToBounds = true
translatesAutoresizingMaskIntoConstraints = false

addSubview(containerImageView)
containerImageView.clipsToBounds = true
containerImageView.fillSuperview()


}

fileprivate func setUpPlayer(){

let urlPathString = Bundle.main.path(forResource: "dance", ofType: "mp4")

if let videoURL = urlPathString{
    
    let url = URL(fileURLWithPath: videoURL)
    player = AVPlayer(url: url)
    playerLayer = AVPlayerLayer(player: player)
    playerLayer.cornerRadius = 20
    playerLayer.bounds = self.containerImageView.bounds
    print(self.containerImageView.bounds)
    playerLayer.videoGravity = .resizeAspectFill
    
    
    self.layer.masksToBounds = true
    self.layer.cornerRadius = 20
    self.layer.addSublayer(playerLayer)
    
    player.play()
    
    }
}
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-13 00:18:16

为了解决这个问题,我需要像这样调用layoutSublayers方法:

代码语言:javascript
运行
复制
override func layoutSublayers(of layer: CALayer) {
    super.layoutSublayers(of: layer)
    
    playerLayer.frame = self.bounds
}

该方法可以正确地设置playerLayer的边界。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62861737

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档