在运行时更改 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 上做弯角?