为什么我的UIButton.tintColor不起作用?

say*_*guh 44 uibutton ios

我的构建目标设置为IOS5,这是我理解的UIButton.tintColor介绍...

我在视图控制器的viewDidLoad中有这个

[timelineButton setTintColor:[UIColor blackColor]];
[timelineButton setTitle:@"test" forState:UIControlStateNormal];
Run Code Online (Sandbox Code Playgroud)

文本更改正常,但按钮不是黑色?

谢谢!

Eva*_*ski 57

根据文件:

此属性对所有按钮类型无效.

您需要将切换buttonType到另一个其中之一.(遗憾的是,文档未指定哪些特定按钮类型支持此属性.)

  • iOS 7的注意事项:使用`UIButtonTypeSystem`,该按钮将自动使用`tintColor`作为标题标签的`textColor`. (11认同)
  • 适用于iOS 7的注意事项:UIButtonTypeSystem技巧适用于textColor和imageColor (3认同)
  • 它在Storyboard/Interface Builder中对我有用:将按钮类型设置为'system',然后将视图(UIButton)的背景设​​置为所需的颜色 - 完美的工作! (2认同)
  • **Swift 3** 对于以编程方式执行此操作的任何人:`var button = UIButton(type: .system)` ` button.tintColor = UIColor.blue` (2认同)

Jes*_* S. 30

确保按钮"类型"设置为"系统".如果将其设置为"自定义",则可能是按钮颜色未发生变化的原因.这就是我发生的事情并将类型更改为System修复它.


Bin*_*ian 8

它为您突出显示的状态颜色着色.当您点击/单击UIButton时,只要您按住UIButton上的点击/单击,就会出现用tintColor指定的颜色.

resetButton.tintColor = [UIColor colorWithRed:0.764 green:1.000 blue:0.000 alpha:1.000];
Run Code Online (Sandbox Code Playgroud)

正常状态下按钮为白色.但是,如果我按下按钮,颜色会变成红色,但只有这样.

如果您需要更改按钮,那么它在UIControlStateNormal中看起来像红色或蓝色

在Interface Builder中将UIButtonType更改为UIButtonTypeCustom或以编程方式将其更改为

 UIButton *resetButton = [UIButton buttonWithType:UIButtonTypeCustom];
Run Code Online (Sandbox Code Playgroud)

自己更改属性并重新创建圆角

resetButton.backgroundColor = [UIColor redColor];
resetButton.layer.borderColor = [UIColor blackColor].CGColor;
resetButton.layer.borderWidth = 0.5f;
resetButton.layer.cornerRadius = 10.0f;
Run Code Online (Sandbox Code Playgroud)

  • 并且不要忘记将#import <QuartzCore/QuartzCore.h>包含在CALayer声明中. (2认同)

Rob*_*aff 7

如其他答案中所述,色调不适用于自定义按钮类型.确保明确声明按钮类型.不要只使用[UIButton alloc] init]

这将有效:

UIButton *mybutton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[mybutton setImage:[UIImage imageNamed:@"myImage"] forState:UIControlStateNormal];
mybutton.tintColor = [ODTheme blueTintColor];
Run Code Online (Sandbox Code Playgroud)


Zai*_*han 5

我发现必须遵循三件事。

1. 将图像渲染为Default

Images.xcassets > Your Image > Show the Attributes inspector > Render As > Default

默认渲染

2. 确保您的按钮类型是系统

3. 现在更改按钮的tintColor。

完毕。