在Swift中使用扩展。更改UIImage
的叠加颜色会产生颗粒状/像素化图像。
extension UIImage{
func tint(color: UIColor) -> UIImage{
UIGraphicsBeginImageContext(self.size)
let context = UIGraphicsGetCurrentContext()
// The below 2 lines, Scaling & Translating doesn't have any affect.
// I read in some post to add this as fix but it doesn't work
context!.scaleBy(x: 1.0, y: -1.0)
context!.translateBy(x: 0.0, y: -self.size.height)
context!.setBlendMode(.multiply)
let rect = CGRect(x: 0, y: 0, width: self.size.width, height: self.size.height)
context!.clip(to: rect, mask: self.cgImage!)
color.setFill()
context!.fill(rect)
let newImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return newImage!
}
}
我做错了什么?
还有其他/更好的方法吗?
Objective-C中的解决方案也受到欢迎。
答案 0 :(得分:0)
您可以使用UIGraphicsBeginImageContextWithOptions
。
此功能允许您传入比例因子以应用于图像作为第三个参数。如果您为此值指定var result = $('#5').which('.abc') => 3
var result = $('#5').which('div') => 5
,则会自动将其设置为主屏幕的比例(这对视网膜显示非常有用)。
在你的情况下,电话会是
0.0
第二个参数指定是否应忽略图像的alpha通道。