57

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

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

[timelineButton setTintColor:[UIColor blackColor]];
[timelineButton setTitle:@"test" forState:UIControlStateNormal];

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

谢谢!

4

13 回答 13

67

根据文档

此属性并非对所有按钮类型都有效。

您需要将您的切换到其中的buttonType另一个。(不幸的是,文档没有指定哪些特定的按钮类型支持此属性。)

于 2012-06-16T18:34:21.760 回答
39

确保您的按钮“类型”设置为系统。如果它设置为自定义,则可能是您的按钮颜色没有改变的原因。这就是发生在我身上的事情,将类型更改为 System 修复了它。

于 2015-02-09T20:14:10.937 回答
8

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

resetButton.tintColor = [UIColor colorWithRed:0.764 green:1.000 blue:0.000 alpha:1.000];

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

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

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

 UIButton *resetButton = [UIButton buttonWithType:UIButtonTypeCustom];

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

resetButton.backgroundColor = [UIColor redColor];
resetButton.layer.borderColor = [UIColor blackColor].CGColor;
resetButton.layer.borderWidth = 0.5f;
resetButton.layer.cornerRadius = 10.0f;
于 2012-10-15T21:21:54.580 回答
7

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

这将起作用:

UIButton *mybutton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[mybutton setImage:[UIImage imageNamed:@"myImage"] forState:UIControlStateNormal];
mybutton.tintColor = [ODTheme blueTintColor];
于 2013-12-04T20:13:43.377 回答
4

今天,我也遇到了这个问题。我使用委托来解决它。

[button addTarget:self action:@selector(buttonPress:) forControlEvents:UIControlEventTouchDown];
[button addTarget:self action:@selector(buttonPressReset:) forControlEvents:UIControlEventTouchUpInside | UIControlEventTouchUpOutside];

-(void)buttonPress:(id)sender{
UIButton* button = (UIButton*)sender;
[button setBackgroundColor:[UIColor greenColor]];
NSLog(@"buttonPressed");
}

-(void)buttonPressReset:(id)sender{
UIButton* button = (UIButton*)sender;
[button setBackgroundColor:[UIColor redColor]];
NSLog(@"buttonPressReset");
}
于 2013-01-08T06:01:24.073 回答
4

我发现必须遵循 3 件事。

1. 将图像渲染为Default

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

默认渲染

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

3. 现在更改按钮的 tintColor。

完毕。

于 2018-01-26T07:16:52.577 回答
3

应该试试这个方法:

- (void)setTitleColor:(UIColor *)color
             forState:(UIControlState)state
于 2016-02-15T23:15:18.933 回答
3

在 iOS 13 中,您可以为图像着色,然后将其设置为按钮:

let coloredImage = UIImage().withTintColor(UIColor.red)
UIButton().setImage(coloredImage, for: .normal)
于 2020-01-21T14:19:40.643 回答
2

只需在StoryboardUIButton中设置您的类型System

在此处输入图像描述

然后在代码中使用:

myButton.tintColor = UIColor.whiteColor()
于 2016-05-12T07:39:43.423 回答
2

如果您的 UIButton 类型是系统,那么只有 tint color 属性有效。因此,首先您需要将按钮类型设置为系统,然后为特定状态应用色调颜色。

let btn = UIButton.init(type: .system)
[btn setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
于 2017-11-26T06:35:50.773 回答
1

要更改 Button 文本的颜色,您可以使用:

resetButton.setTitleColor(UIColor.blackColor(), forState: .Normal)

或 OBJ-C:

- (void)setTitleColor:(UIColor *)color
         forState:(UIControlState)state

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIButton_Class/#//apple_ref/occ/instm/UIButton/setTitleColor:forState

于 2016-05-13T10:16:56.397 回答
0

只需使用:

[yourButton setBackgroundImage:[yourButton.currentBackgroundImage imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate] forState:UIControlStateNormal]; 
[yourButton setTintColor:[UIColor blackColor]];
于 2018-12-09T09:58:29.530 回答
0

斯威夫特 4:

yourButton.setTitleColor(UIColor.white, for: .normal)
于 2019-07-24T04:27:10.100 回答