【发布时间】:2016-08-11 07:47:47
【问题描述】:
【问题讨论】:
-
您可以使用多个不同颜色的图像,这些图像在点击按钮时会发生变化,因为无法更改颜色。
-
您能否将衬衫的“颜色”部分保存为透明图像,然后单击更改容器的背景颜色?这样可以避免为每件衬衫的每个选项提供单独的图像,并且可以轻松更新色调。
标签: ios objective-c xcode swift uiimageview
【问题讨论】:
标签: ios objective-c xcode swift uiimageview
你可以这样做,但你的图片必须是 png,
UIImage *img = [UIImage imageNamed:@"ic_email_white_48dp_2x.png"];
self.myImageView.image = [img imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
self.myImageView.tintColor = [UIColor blackColor];
我的图像是白色的,当我设置 tintcolor 时,它变成了黑色。同样你可以设置不同的不同颜色。
UIImageRenderingModeAlwaysTemplate 是此功能的核心。
希望这会有所帮助。 :)
【讨论】:
tintColor 管理 OP 的特定示例——因为图像中似乎有他想要保留的颜色。例如,看看衣领和袖子周围的红色亮点。您的解决方案将用给定的颜色填充 all 非透明像素,而不仅仅是 OP 想要的颜色。
您可以尝试使用基本图像作为模板图像,然后相应地更改色调颜色。对于您拥有的那种用例,这可能看起来不足以满足您的需求,但您可以尝试。这将取决于您的原始基础映像。
设置原图:
if let tshirtimage = UIImage(named: "tshirtbase") {
imageView.image = tshirtimage.imageWithRenderingMode(.AlwaysTemplate)
}
然后,在每个颜色的按钮代码中,您可以像这样更改颜色:
imageView.tintColor = UIColor.redColor()
【讨论】:
tintColor 仅用给定颜色替换不透明像素,但在 OP 的示例中,他似乎想要保留一些颜色(看看领子和袖子周围的红色高光)。
正如@Anton 和@David 所说,更改 UIImage 颜色是不可能的。 唯一的方法是添加不同颜色的单独图像。
【讨论】:
你必须向按钮添加一个动作,向图像视图添加一个出口。 在按钮操作中,您将图像设置为图像视图。 f.e.
action redbutton{
imageview.image = UIImage("greenimage.png")
}
action redbutton{
imageview.image = UIImage("redimage.png")
}
这不是正确的代码。只是给你一个想法。
编辑:说清楚。您无法更改图片的“UIColor”来获得您正在寻找的结果。您需要为您的衬衫使用的每种颜色提供不同的图像,您只需在按钮的操作方法中实现图像的更改。
【讨论】:
不,您应该使用不同的图像,并根据选择的颜色按钮切换图像。 使用 Adobe Photoshop 或类似工具准备不同的图像,然后将它们上传到 XCode。 然后,当用户选择 buttonColor1 时,您使用 self.imageView.image = [UIImage imageNamed:@"redColor"];比如……
【讨论】: