首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >设置UIImage颜色

设置UIImage颜色
EN

Stack Overflow用户
提问于 2020-04-22 23:35:02
回答 1查看 179关注 0票数 0

我的目标是改变代码中的系统UIImage的颜色。我声明该图像与

代码语言:javascript
运行
复制
    let defaultImage = UIImage(systemName: "person.circle.fill")

但是当我改变它的色调时:

代码语言:javascript
运行
复制
 let grayDefaultImage = defaultImage?.withTintColor(.gray)

grayDefaultImage仍然显示标准的蓝色。接下来,我使用一个分机

代码语言:javascript
运行
复制
//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!
    }
}

图像以非常“像素化”或“低分辨率”的形式呈现。

EN

Stack Overflow用户

回答已采纳

发布于 2020-04-23 02:55:35

:) say:The new image uses the same rendering mode as the original image.

因此,如果原始图像的渲染方式是.alwaysTemplate,则意味着图像会忽略其颜色信息。您需要将模式设置为.alwaysOriginal

代码语言:javascript
运行
复制
defaultImage?.withTintColor(.gray, renderingMode: .alwaysOriginal)
票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61376879

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档