IOS 7.1中UIButton的setBackgroundImage不起作用

时间:2014-03-18 15:54:57

标签: ios iphone

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

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

BWT:图片还可以,因为这个代码在视图中被调用会出现,这就好了...当我按下需要更改setBackgroundImage的按钮时,它不起作用。

3 个答案:

答案 0 :(得分:3)

这是7.1 SDK和Xcode 5.1的错误。

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

这应该可以解决问题。

答案 1 :(得分:1)

我遇到了同样的问题。我终于发现,如果按钮被禁用,设置按钮的(背景)图像在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)。

答案 2 :(得分:1)

对我而言,它是覆盖背景图像的前景图像。因此,使前景图像透明,然后显示背景图像。设置背景图像实际上现在正常工作。