在iOS 7中将UIButton图像设置为蓝色button

在iOS 6 SDK中,我编写了以下几行代码来在button中显示图像:

NSURL *thumbURL2 = [NSURL URLWithString:@"http://example.com/thumbs/2.jpg"]; NSData *thumbData2 = [NSData dataWithContentsOfURL:thumbURL2]; UIImage *thumb2 = [UIImage imageWithData:thumbData2]; [btn2 setImage:thumb2 forState:UIControlStateNormal]; [self.view addSubview:btn2]; 

但是现在用Xcode 5和iOS 7,这是行不通的。 该button不包含图像。 button用蓝色填充。

在iOS7中有新的buttontypes称为UIButtonTypeSystem NS_ENUM_AVAILABLE_IOS(7_0),/ /标准系统button

检查.xib文件并将buttontypes更改为“自定义” 看看图像

要以编程方式执行此操作,请将此行添加到viewDidLoad

 [UIButton buttonWithType:UIButtonTypeSystem]; 

看起来iOS 7使用提供的图像就像Alpha掩码一样显示button的色彩。 将buttontypes更改为UIButtonTypeCustom为我做了诡计(谢谢user716216!)。 如果您已经有背景图像,将图像设置为背景并不总是可行的,就像我的情况一样。

有一个很好的机会,形象是在那里,你只是不能看到它。 尝试将button的types更改为UIButtonTypeCustom 。 如果这不起作用,请将button的背景色设置为[UIColor clearColor];

问题是TintColor。 默认情况下,iOS在每个button上都会抛出蓝色的色调。 你可以通过3种方式解决它。

  1. 改变色彩的颜色。 [button setTintColor:[UIColor blackColor]]; 这可能会以您不想要的方式为您的图像着色。

  2. 和大多数其他人一样,设置背景图片。 [button setBackgroundImage:[UIImage...]];

  3. 添加一个UIImageView到你的button。

UIImageView * img = [[UIImageView alloc] initWithImage:[UIImage...]];

[button addSubView:img];

为了迅速:

  let aButton = UIButton.buttonWithType(UIButtonType.Custom) as UIButton 

我遇到过同样的问题。 在我的故事板上,我有一个没有任何图像的button。

然后我会分配代码中的图像。

IOS 7来了,我得到了很多蓝色的图像。

决议很简单,但令人困惑。 如果我在故事板上分配任何图像,然后在运行时更改图像,它可以正常工作。

即使不打算使用它,您也必须在故事板上指定一个初始图像。

Swift 3:

 let image = UIImage(named: "my-image") myButton.setImage(image.withRenderingMode(.alwaysOriginal), for: .normal) 

这对我有效

 [myButton1 setBackgroundImage:[UIImage imageNamed:@"phones.png"] forState:UIControlStateNormal]; 

注意:这样做之前删除前面的图像。

没有给出的解决scheme为我工作。 如果在Storyboard中没有设置初始图像,则仍然可以使用setBackgroundImage更改该button的图像。

对于你的例子,只需要稍作改动。

 NSURL *thumbURL2 = [NSURL URLWithString:@"http://example.com/thumbs/2.jpg"]; NSData *thumbData2 = [NSData dataWithContentsOfURL:thumbURL2]; UIImage *thumb2 = [UIImage imageWithData:thumbData2]; [btn2 setBackgroundImage:thumb2 forState:UIControlStateNormal]; [self.view addSubview:btn2]; 

这个问题被称为xcode中button的蓝色问题。 当我们通过代码制作button时,button默认显示蓝色色调。这可以通过根据您的单元格颜色将黑色或白色分配给黑色或白色来解决。 代码是:

 UIImage *closebtnimg = [UIImage imageNamed:@"icon_uncheck.png"]; UIImage *closebtnimg1 = [UIImage imageNamed:@"icon_checked.png"]; Custombutton *button = [Custombutton buttonWithType:UIButtonTypeRoundedRect]; [button setFrame:CGRectMake(52, 66, 25, 24)]; [button setBackgroundImage:closebtnimg forState:UIControlStateNormal]; [button setBackgroundImage:closebtnimg1 forState:UIControlStateSelected]; [button setTintColor:[UIColor whiteColor]]; [cell.contentView addSubview:button]; [button addTarget:self action:@selector(changeImage:) forControlEvents:UIControlEventTouchUpInside]; 

使所有四个状态(默认,突出显示,选中,禁用)的色调为clearcolor为我工作。