【发布时间】:2017-01-19 07:29:32
【问题描述】:
我正在使用以下代码使用 CALayer 在视频中添加图像。但是我面临的问题是当我选择不同的视频分辨率时水印的大小及其位置会发生变化。我正在制作一个像 snapchat 这样的应用程序,用户可以在其中选择贴纸并将其添加到视频中,方法是调整其位置和大小。
谁能告诉我,我在这里犯了什么错误?或者我现在应该怎么做才能做到这一点?提前致谢!
let aLayer = CALayer()
aLayer.contents = image.cgImage
aLayer.opacity = 1.0
//sorts the layer in proper order
let videoTrack: AVAssetTrack? = videoAsset.tracks(withMediaType: AVMediaTypeVideo)[0]
let videoSize: CGSize? = videoTrack?.naturalSize
let parentLayer = CALayer()
let videoLayer = CALayer()
let videoScale : CGFloat = CGFloat((videoSize?.width)!)/CGFloat(self.containerView.frame.width)
print("sticker frame \((stickerImageView?.frame.width)! * videoScale) \((stickerImageView?.frame.height)! * videoScale)")
aLayer.frame = CGRect(x: (stickerImageView?.frame.origin.x)! * videoScale ,y: (stickerImageView?.frame.origin.y)! * videoScale , width: (stickerImageView?.frame.width)! * videoScale , height : (stickerImageView?.frame.height)! * videoScale )
parentLayer.frame = CGRect(x: CGFloat(0), y: CGFloat(0), width: CGFloat((videoSize?.width)!), height: CGFloat((videoSize?.height)!))
videoLayer.frame = CGRect(x: CGFloat(0), y: CGFloat(0), width: CGFloat((videoSize?.width)!), height: CGFloat((videoSize?.height)!))
parentLayer.addSublayer(videoLayer)
parentLayer.addSublayer(aLayer)
【问题讨论】:
标签: ios objective-c swift avfoundation