4
[_firstPrincipleButton setBackgroundImage:[UIImage imageNamed:@"i_press.png"]
                                 forState:UIControlStateNormal];

上面的代码在 iOS7 中运行良好,但在 iOS7.1 中这并没有改变 UIButton 的图像。我也尝试过使用 setImage 执行此操作,但没有成功。

谢谢

4

2 回答 2

9

以防其他人有同样的问题,需要另一个提示来解决这个问题:

我也遇到了这个问题,最后发现如果按钮被禁用,设置按钮的(背景)图像在 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)。

于 2014-04-02T08:07:47.353 回答
0

这是 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];
    
}

这将起作用。

享受编码:)

于 2015-09-30T14:14:48.660 回答