在iOS 7中设置UIButton图像会产生蓝色按钮

use*_*539 161 uibutton uiimage ios7

在iOS 6 SDK上,我编写了以下代码行来显示按钮内的图像:

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];
Run Code Online (Sandbox Code Playgroud)

但现在使用Xcode 5和iOS 7这不起作用.该按钮不包含图像.按钮充满蓝色.

Cha*_*ndo 375

在iOS7中有一个名为UIButtonTypeSystem的新按钮类型NS_ENUM_AVAILABLE_IOS(7_0),//标准系统按钮

检查.xib文件并将按钮类型更改为自定义 看图像

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

[UIButton buttonWithType:UIButtonTypeSystem]; 
Run Code Online (Sandbox Code Playgroud)

  • 请注意,此解决方案确实会删除系统色调颜色,但也会导致突出显示状态和正常状态之间的硬转换.如果你想保留系统行为,动画等,但想摆脱色彩,试试`[myUIButton setImage:[[UIImage imageNamed:@"myButtonImage"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] forState:UIControlStateNormal] ;`(IB中的按钮类型设置为"System"). (54认同)
  • [UIButton buttonWithType:UIButtonTypeSystem]; (2认同)

use*_*609 53

iOS 7似乎正在使用提供的图像作为Alpha蒙版来显示按钮的色调.更改按钮类型UIButtonTypeCustom为我做了诀窍(感谢user716216!).如果您已经有背景图像,那么将图像设置为背景并不总是有效,就像我的情况一样.


Wil*_*son 26

斯威夫特3:

let image = UIImage(named: "my-image")
myButton.setImage(image.withRenderingMode(.alwaysOriginal), for: .normal)
Run Code Online (Sandbox Code Playgroud)


Mic*_*lum 24

图像很有可能存在,你就是看不到它.尝试将按钮的类型更改为UIButtonTypeCustom.如果这不起作用,请将按钮的背景颜色设置为[UIColor clearColor];


小智 9

问题是TintColor.默认情况下,iOS会在每个按钮上显示蓝色色调.你可以通过3种方式绕过它.

  1. 更改色调颜色.[button setTintColor:[UIColor blackColor]]; 这可能会以您不希望的方式为图像着色.

  2. 与大多数其他建议一样,设置背景图像. [button setBackgroundImage:[UIImage...]];

  3. 将UIImageView添加到按钮.

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

[button addSubView:img];


Esq*_*uth 9

对于swift:

    let aButton = UIButton.buttonWithType(UIButtonType.Custom) as UIButton
Run Code Online (Sandbox Code Playgroud)


Rya*_*ner 6

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

然后我会在代码中分配图像.

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

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

即使您不打算使用它,也必须在故事板上指定起始图像.