在iOS中使用时,UIImage看起来有所不同

时间:2013-10-16 08:50:27

标签: ios objective-c uiimage

我遇到了png图片的问题,与实际图片相比,iOS上的颜色错误。

无论我如何使用图像,它总是得到错误的颜色。我试过了UIButtonUIImageView,它给出了相同的结果。

这是对UIImage

的非常标准的使用
UIImage* greenButtonImg = [UIImage imageNamed:@"btn_green"];
UIImageView* testView = [[UIImageView alloc] initWithImage:greenButtonImg];
[self.view addSubview:testView];

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

First button is as the image looks on the Mac, second image is as the image look on iOS

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

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

2 个答案:

答案 0 :(得分:3)

正如杰夫在评论中写道,这是RGB配置文件的一个问题。

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

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

答案 1 :(得分:1)

在iOS 7.0中,图像使用工具栏的tintColor进行着色。

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

默认情况下,使用UIImage创建图像(UIImageRenderingModeAutomatic)。

如果您在图片上设置了UIImageRenderingModeAutomatic,则会根据其上下文将其视为模板或原件。

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

其他元素 - 例如图片视图和网络视图 - 将其图像视为原件。如果您希望始终将图像视为模板而不考虑上下文,请设置UIImageRenderingModeAlwaysTemplate

如果您希望始终将图片视为原始图片,请设置UIImageRenderingModeAlwaysOriginal

有关详细信息,请参阅Template Images