Я на Swift 4, и моя цель - изменить цвет системы UIImage
в коде. Я объявляю изображение с
let defaultImage = UIImage(systemName: "person.circle.fill")
Но когда я изменяю его оттенок с помощью:
let grayDefaultImage = defaultImage?.withTintColor(.gray)
grayDefaultImage
по-прежнему отображает стандартный синий цвет. Затем я использую расширение
//MARK: -UIImage extension
extension UIImage {
/// @Todo: this blurs the image for some reason
func imageWithColor(color: UIColor) -> UIImage {
UIGraphicsBeginImageContextWithOptions(self.size, false, self.scale)
color.setFill()
let context = UIGraphicsGetCurrentContext()
context?.translateBy(x: 0, y: self.size.height)
context?.scaleBy(x: 1.0, y: -1.0)
context?.setBlendMode(CGBlendMode.normal)
let rect = CGRect(origin: .zero, size: CGSize(width: self.size.width, height: self.size.height))
context?.clip(to: rect, mask: self.cgImage!)
context?.fill(rect)
let newImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return newImage!
}
}
И изображение отображается в очень «пиксельной» или «низкой разрешающей» форме.