gpt4 book ai didi

ios - imageWithRenderingMode 不适用于 setImageWithUrl(对于 tintColor)

转载 作者:行者123 更新时间:2023-11-28 19:49:52 31 4
gpt4 key购买 nike

我可以使用以下方法为 UIImageView 中的 UIImage 着色:

imageView = [[UIImageView alloc]initWithImage:[myImage imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]];
imageView.tintColor = [UIColor redColor];

但是当使用 AFNetworking 的 setImageWithUrl 初始化图像时:

imageView = [imageView setImageWithUrl:url];
imageView.image = [imageView.image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
imageView.tintColor = [UIColor redColor];

这没有效果,图像以原始颜色显示。

在 iOS 7+ 上测试。

最佳答案

您的代码没有任何效果,因为您正在分配要从远程 URL 获取的图像,这需要时间,因此发生在稍后 - 在您的代码完成之后。因此,这一行什么都不做:

imageView.image = [imageView.image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];

...因为在它运行时,imageView.image 仍然是 nil

相反,使用带有完成处理程序的网络命令,并且在完成处理程序之前不要更改图像渲染模式。具体来说,我会做的是:首先,下载图像。现在(在完成处理程序中)导出模板图像并将其分配给 ImageView 。

编辑:

根据您后来的评论,另一个问题是您似乎不了解 ImageView 是什么。它包含一个 图像——最近分配的图像。所以您的代码现在的行为完全符合我的预期 - ImageView 显示模板图像,因为这是您分配给它的最后一张图像。

imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate 将原始图像的非透明部分着色为淡色,仅此而已 - 这正是您现在看到的,所以您的代码可以正常工作。

关于ios - imageWithRenderingMode 不适用于 setImageWithUrl(对于 tintColor),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29880939/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com