[_firstPrincipleButton setBackgroundImage:[UIImage imageNamed:@"i_press.png"]
forState:UIControlStateNormal];
上面的代码在 iOS7 中运行良好,但在 iOS7.1 中这并没有改变 UIButton 的图像。我也尝试过使用 setImage 执行此操作,但没有成功。
谢谢
以防其他人有同样的问题,需要另一个提示来解决这个问题:
我也遇到了这个问题,最后发现如果按钮被禁用,设置按钮的(背景)图像在 iOS 7.1 上不起作用。
不确定这是否能解决您的问题,但这是我的问题。不幸的是,打电话setNeedsLayout
对我没有帮助。作为一种解决方法,您可以做的是覆盖 UIButton 或添加一个包含如下方法的类别来设置图像:
- (void)setImage:(UIImage *)img forButtonState:(UIControlState)state
{
BOOL shouldEnable = self.enabled;
self.enabled = YES;
[self setImage:img forState:state];
self.enabled = shouldEnable;
}
为此问题提交了错误报告 (16497031)。
这是 iOS 7.1 中的一个错误,
您可以为 UIButton 创建一个类别并实现一个方法来设置图像,有点像这样。
-(void)setImage:(UIImage *)image forButtonState:(UIControlState)state
{
CGFloat version = [[UIDevice currentDevice] systemVersion].floatValue ;
if( version <= 7.1)
{
BOOL isFirstTime = YES ;
for(UIView *aView in self.subviews)
{
if([aView isKindOfClass:[UIImageView class]])
{
[(UIImageView *)aView setImage:image] ;
isFirstTime = NO ;
break ;
}
}
if(isFirstTime)
{
CGRect frame = self.frame ;
frame.size = image.size ;
UIImageView * imageView = [[UIImageView alloc] initWithFrame:frame];
[imageView setImage:image];
[self addSubview:imageView];
}
}
else
[self setImage:image forState:state];
}
这将起作用。