我有一个蓝色的渐变图像。它是100px(高度)x 1px(宽度)。现在,我正在尝试将其用作突出显示状态的背景图像。但不知何故,它在运行时变成橙色。这可能有什么问题?按钮的高度为40px,所以在设置之前我正在调整大小
UIImage *image = [UIImage imageNamed:@"pressed.png"];
UIImage *stretchedImage = [[UIImage imageWithImage:image scaledToSize:frame.size] stretchableImageWithLeftCapWidth:0 topCapHeight:0];
[button setBackgroundImage:stretchedImage forState:UIControlStateHighlighted];
答案 0 :(得分:1)
有几种可能的解释,大概是可能性的降序:
1)您的scaledToSize类别代码中有一个错误,它会反转图像中字节的RGB顺序,将蓝色变为橙色。尝试不缩放图像,看看它是否是正确的颜色。实际上,您无需进行缩放,按钮背景图像已经拉伸以适应运行时。
2)你的项目中有两个pressed.png图像,可能在不同的文件夹中,所以你没有注意到,但由于编译器在构建时将所有图像转储到同一个文件夹,你的blue pressed.png正在被orange pressed.png覆盖。在磁盘上搜索您的项目,看看是否是这种情况。
3)之前您有一个名为pressed.png的橙色图像,当您构建应用程序时,由于某些缓存问题,它使用旧图像。尝试清理构建,重置模拟器并从设备上删除应用程序。
4)你有一个橙色图像的pressed@2x.png版本。当您在设备上运行时,它使用视网膜版本,因此它看起来不同。
5)你的PNG以某种方式损坏 - 删除它并从头开始重新创建。我曾经遇到过只有1px宽的图像的问题,所以如果是这样的话,试着把它做得更宽。