0

我有一个蓝色的渐变图像。它是 100 像素(高度)x 1 像素(宽度)。现在我试图将它用作突出显示状态的背景图像。但不知何故,它在运行时变成了橙色。这里可能有什么问题?按钮的高度是 40px,所以我在设置它之前做了一个调整大小

UIImage *image = [UIImage imageNamed:@"pressed.png"];
UIImage *stretchedImage = [[UIImage imageWithImage:image scaledToSize:frame.size] stretchableImageWithLeftCapWidth:0 topCapHeight:0];
[button setBackgroundImage:stretchedImage forState:UIControlStateHighlighted];
4

1 回答 1

1

有一些可能的解释,大致按可能性降序排列:

1)您的 scaledToSize 类别代码中有一个错误,它正在反转图像中字节的 RGB 顺序,将蓝色变为橙色。尝试不缩放图像,看看它是否是正确的颜色。无论如何,您实际上并不需要对其进行缩放,按钮背景图像已经在运行时被拉伸以适应。

2)您的项目中有两个 press.png 图像,可能在不同的文件夹中,所以您没有注意到,但是由于编译器在构建时将所有图像转储到同一个文件夹中,因此您的蓝色 press.png 被覆盖橙色按下.png。在磁盘上搜索您的项目,看看是否是这种情况。

3) 您之前有一个名为pressed.png 的橙色图像,当您构建应用程序时,由于某些缓存问题,它使用的是旧图像。尝试干净的构建,重置您的模拟器并从设备上删除该应用程序。

4) 你有一个pressed@2x.png 版本的橙色图像。当您在设备上运行时,它使用的是视网膜版本,因此看起来有所不同。

5)您的 PNG 以某种方式损坏 - 将其删除并从头开始重新创建。我以前遇到过只有 1px 宽的图像的问题,所以如果是这样的话,试着把它变宽。

于 2012-04-16T12:46:48.437 回答