我试图用Swift中的另一个UIImage掩盖UIImage。 当我在xcode操场中运行代码时,实现了期望的结果,但是当我在模拟器上运行相同的代码时却没有。
这是我运行的代码:
func maskImage(image: UIImage, maskImage: UIImage) -> UIImage? {
let size = image.size
let rect = CGRect(origin: CGPoint.zero, size: size)
// Begin graphics
UIGraphicsBeginImageContextWithOptions(size, false, 0.0)
guard let context = UIGraphicsGetCurrentContext() else { return nil }
context.translateBy(x: 0.0, y: image.size.height)
context.scaleBy(x: 1.0, y: -1.0)
let mask = maskImage.cgImage
context.clip(to: rect, mask: mask!)
context.draw(image.cgImage!, in: rect)
let img = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return img
}
.clip(to rect: CGRect, mask: CGImage)
的文档说:
如果mask参数是图像,则mask就像alpha蒙版一样 并与当前剪辑区域混合。
我认为这就是为什么第二张图片改为使用alpha蒙版。但是如何在第一张图片中获得所需的输出?为什么游乐场显示正确的结果而不是模拟器?
旁注:CGImage.masking(_ mask: CGImage) -> CGImage?
也会产生alpha蒙版。