5

我在使用png图像时遇到问题,与实际图像相比,iOS 上的颜色错误。

我如何使用图像并不重要,它总是得到错误的颜色。我已经尝试过了UIButtonUIImageView它给出了相同的结果。

这是 a 的非常标准的用法UIImage

UIImage* greenButtonImg = [UIImage imageNamed:@"btn_green"];
UIImageView* testView = [[UIImageView alloc] initWithImage:greenButtonImg];
[self.view addSubview:testView];

第二张图片是它在 iOS 上的外观,第一个按钮是它在我的 Mac(Finder 和 Photoshop)上的外观:

第一个按钮与 Mac 上的图像相同,第二个按钮与 iOS 上的图像相同

如您所见,第二个按钮具有不同的绿色。这发生在使用这张图片的应用程序中。它发生在模拟器和 iPhone 5 上。

什么会导致这个问题?这可能是由创建图像的 Photoshop 中的设置引起的吗?

4

2 回答 2

3

正如 Jeff 在评论中所写,这是 RGB 配置文件的问题。

我设法通过在 Photoshop 中转换颜色配置文件来解决问题:

Edit -> Convert to Profile... -> Set profile to "Apple RGB"

于 2013-10-16T09:36:35.973 回答
1

在 iOS 7.0 中,图像使用工具栏的tintColor.

在 iOS 7.0 中,所有的子类都从基类UIView派生出它们的行为。tintColor

默认情况下,图像 ( UIImage) 使用UIImageRenderingModeAutomatic.

如果您已UIImageRenderingModeAutomatic在图像上设置,它将根据其上下文被视为模板或原始图像。

某些UIKit元素(包括导航栏、标签栏、工具栏、分段控件)会自动将其前景图像视为模板,尽管它们的背景图像被视为原始图像。

其他元素(例如图像视图和 Web 视图)将其图像视为原始图像。如果您希望无论上下文如何,您的图像始终被视为模板,请设置UIImageRenderingModeAlwaysTemplate.

如果您希望您的图像始终被视为原始图像,请设置UIImageRenderingModeAlwaysOriginal.

有关更多信息,请参阅模板图像

于 2013-10-16T17:00:19.897 回答