【问题标题】:UIButton background Image in IOS7IOS7中的UIButton背景图片
【发布时间】:2014-02-11 12:20:42
【问题描述】:
我正在为UIButton 设置我的背景图像,它在 iOS6 上运行良好,但在 iOS7 中的突出显示状态不起作用。
[clearButton setBackgroundImage:[UIImage imageNamed:@"back-over@2x.png"] forState:UIControlStateHighlighted];
[clearButton setBackgroundImage:[UIImage imageNamed:@"btn@2x~ipad.png"] forState:UIControlStateNormal];
可能是什么问题?
【问题讨论】:
标签:
ios
iphone
ios6
ios7
uibutton
【解决方案1】:
从图像名称中删除 @2x 并在资源文件夹中保留图像的两个副本,例如 back-over.png 和 back-over@2x.png 用于 Retina 和非 Retina 设备。
然后更新你的代码如下,
[clearButton setBackgroundImage:[UIImage imageNamed:@"back-over.png"] forState:UIControlStateHighlighted];
不用担心@2x 图像。如果设备显示是 Retina,它会自动在文件名后面加上@2x。
【解决方案2】:
您确定 clearButton 在 .h 中声明了吗?
打开助手编辑器,将按钮拖到.h文件中并命名为clearButton。
现在只需将 .m clearButton 替换为 _clearButton,如下所示:
[_clearButton setBackgroundImage:[UIImage imageNamed:@"back-over@2x.png"] forState:UIControlStateHighlighted];
[_clearButton setBackgroundImage:[UIImage imageNamed:@"btn@2x~ipad.png"] forState:UIControlStateNormal];
我刚刚用 2 张图片试了一下,效果很好。
还要确保图像已导入。
【解决方案4】:
如果是 .png 格式,您只需要提及图像的名称。
例如,如果您有 2 张用于非视网膜和视网膜显示器的图像:img.png 和 img@2x.png
设置图片只需要以下内容:
[yourButton setBackgroundImage:[UIImage imageNamed:@"img"] forState:UIControlStateNormal];
操作系统会根据屏幕的scale 自动搜索图像,它是@2x 版本(Retina 设备有 scale 2,non-retina 有 1)。
【解决方案5】:
确保 UIButton 的 Type 是 Custom,而不是 System。