我使用此代码来掩盖封面图像,但仍然没有采用颜色。所以任何人都可以帮助我?如果有必要,我可以对图像进行必要的更改。
我的代码:
let mask = UIImageView(image: mask-img)
coverImage = UIImageView(image: cover-img)
coverImage.mask = mask
答案 0 :(得分:3)
基本上,您可以通过几种方式实现这一目标,最简单 - 使用CoreGraphics。
首先,您可以查看this user guide provided by Apple。
之后,要为图像添加遮罩,您可以使用类似
的内容func maskImage(image:UIImage, mask:UIImage) -> UIImage? {
if let imageReference = image.cgImage,
let maskReference = mask.cgImage,
let dataProvider = maskReference.dataProvider {
if let imageMask = CGImage(maskWidth: maskReference.width,
height: maskReference.height,
bitsPerComponent: maskReference.bitsPerComponent,
bitsPerPixel: maskReference.bitsPerPixel,
bytesPerRow: maskReference.bytesPerRow,
provider: dataProvider, decode: nil, shouldInterpolate: true) {
if let maskedReference = imageReference.masking(imageMask) {
let maskedImage = UIImage(cgImage: maskedReference)
return maskedImage
}
}
}
return nil
}
为了测试目的,我准备了简单的游乐场。可用here。
结果:
要获得彩色蒙版,您可以将色调效果应用于蒙版图像,例如使用:
private func tinted(_ image:UIImage, with color:UIColor) -> UIImage? {
let rect:CGRect = CGRect(origin: CGPoint(x: 0, y: 0), size: image.size)
UIGraphicsBeginImageContextWithOptions(rect.size, false, image.scale)
let context = UIGraphicsGetCurrentContext()!
image.draw(in: rect)
context.setFillColor(color.cgColor)
context.setBlendMode(.sourceAtop)
context.fill(rect)
if let result:UIImage = UIGraphicsGetImageFromCurrentImageContext() {
UIGraphicsEndImageContext()
return result
}
return nil
}
演示:
更新了游乐场here。