Установить цвет UIImage - PullRequest
       15

Установить цвет UIImage

0 голосов
/ 23 апреля 2020

Я на 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!
    }
}

И изображение отображается в очень «пиксельной» или «низкой разрешающей» форме.

1 Ответ

1 голос
/ 23 апреля 2020

withTintColor (_:) скажем: The new image uses the same rendering mode as the original image.

Таким образом, если режим визуализации исходного изображения равен .alwaysTemplate, это означает, что изображение будет игнорировать информацию о цвете. вам нужно установить режим на .alwaysOriginal:

defaultImage?.withTintColor(.gray, renderingMode: .alwaysOriginal)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...