【问题标题】: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.pngback-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 张图片试了一下,效果很好。

      还要确保图像已导入。

      【讨论】:

        【解决方案3】:

        Rana Anees:请重启你的模拟器 ;-)

        【讨论】:

          【解决方案4】:

          如果是 .png 格式,您只需要提及图像的名称。

          例如,如果您有 2 张用于非视网膜和视网膜显示器的图像:img.pngimg@2x.png 设置图片只需要以下内容:

          [yourButton setBackgroundImage:[UIImage imageNamed:@"img"] forState:UIControlStateNormal];
          

          操作系统会根据屏幕的scale 自动搜索图像,它是@2x 版本(Retina 设备有 scale 2,non-retina 有 1)。

          【讨论】:

            【解决方案5】:

            确保 UIButton 的 Type 是 Custom,而不是 System。

            【讨论】:

            • 按钮属于自定义类型
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-08-09
            • 2014-06-24
            • 2010-12-09
            相关资源
            最近更新 更多