在运行时更改 UIImage 渲染模式

Posted

技术标签:

【中文标题】在运行时更改 UIImage 渲染模式【英文标题】:Change UIImage render mode at runtime 【发布时间】:2019-10-01 12:28:41 【问题描述】:

在我正在开发的应用程序中,我有一些可能(或可能不需要)需要定制的 UIImageView。如何将在运行时作为原始加载到模板的图像的呈现模式更改?

【问题讨论】:

【参考方案1】:

你可以从另一个cgImage初始化一个UIImage,然后你可以根据需要渲染它

示例代码

let originalImage = UIImage(named: "TimeClock2Filled")?.withRenderingMode(.alwaysOriginal)
if let original = originalImage?.cgImage 
    let image2 = UIImage(cgImage: original).withRenderingMode(.alwaysTemplate)

Objective-C 示例代码

UIImage * image = [[UIImage imageNamed:@"TimeClock2Filled"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
if(image.CGImage != nil) 
    UIImage * image2 = [[UIImage imageWithCGImage:image.CGImage]imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];

经过测试,效果很好

【讨论】:

你也可以添加objective-c答案吗?该项目在 obj-c 中 @user426132 请问您能提供一些关于答案的反馈吗? 好的,哇.. 着色工作但现在图像无法缩放以适合图像视图并且太大......我尝试将内容模式设置为 aspectFit 但它不起作用跨度> 奇怪的@user426132 因为不应该改变大小或形式,你能在不做任何修改的情况下正常测试你的图像,看看会发生什么吗?至少在我的测试中没有,只有颜色没有变化跨度> 我在初始化中添加了比例,现在可以使用了

以上是关于在运行时更改 UIImage 渲染模式的主要内容,如果未能解决你的问题,请参考以下文章

即使在运行时设置 UIImage,如何在 UIImageView 上做弯角?

设置Image渲染模式使用TintColor

在运行时更改 UIImageView 中的图像

使用 Xcode6 丢失对 UILabel 和 UIImage 框架的编程更改

Handsontable:在运行时更新单元格渲染器

当 UIImage 改变时动画回退