【问题标题】:setBackgroundImage for UIButton in IOS 7.1 not workingIOS 7.1 中 UIButton 的 setBackgroundImage 不起作用
【发布时间】:2014-11-19 02:34:56
【问题描述】:

我正在尝试更改按钮背景图像。此代码适用于 IOS 6/7。在我升级到 IOS 7.1 后它突然停止工作。

[monday setBackgroundImage:[UIImage imageNamed:@"toggleTopRight"] forState:UIControlStateNormal];

BWT:图像没问题,因为在视图中调用此代码时会出现,并且此处没问题...当我按下需要更改 setBackgroundImage 的按钮时,它不起作用。

【问题讨论】:

  • 需要更多信息。您确定 没有任何 其他内容发生了变化吗?您是否移至图像的资产目录?你能在这里断点并快速查看调用 UIImage 返回的图像吗?
  • 您是否尝试过使用 toggleTopRight.png 之类的图像文件扩展名?
  • 我确定资产没问题。问题是我在视图中调用此方法将出现(相同的代码)按钮更改背景图像但是当我从按钮事件中调用此方法时它不起作用。
  • 检查控制状态是否正确。按钮不是禁用了吗?

标签: ios iphone


【解决方案1】:

这是 7.1 SDK 和 Xcode 5.1 上的错误。

解决方法是在更改后调用 [UIButton setNeedsLayout]。

这应该可以解决问题。

【讨论】:

  • 这是自 7.1 发布以来一直困扰着的项目。为了确保进行 BG 更改,我还要做的是更改 UIControlStateNormal 和 UIControlStateDisabled 的 BG 图像。
【解决方案2】:

我遇到了同样的问题。我终于发现如果按钮被禁用,设置按钮的(背景)图像在 iOS 7.1 上不起作用。

不确定这是否能解决您的问题,但这是我的问题。不幸的是,致电setNeedsLayout 对我没有帮助。作为一种解决方法,您可以做的是覆盖 UIButton 或添加一个包含如下方法的类别来设置图像:

- (void)setBackgroundImage:(UIImage *)img forButtonState:(UIControlState)state
    BOOL shouldEnable = self.enabled;
    self.enabled = YES;
    [self setBackgroundImage:img forState:state];
    self.enabled = shouldEnable;
}

为此问题提交了错误报告 (16497031)。

【讨论】:

    【解决方案3】:

    对我来说,它是覆盖背景图像的前景图像。所以让你的前景图像透明,然后背景图像就会显示出来。设置背景图像现在实际上可以正常工作了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多