我的构建目标是为 IOS5 设置的,这是我理解UIButton.tintColor
的介绍...
我在视图控制器的 viewDidLoad 中有这个
[timelineButton setTintColor:[UIColor blackColor]];
[timelineButton setTitle:@"test" forState:UIControlStateNormal];
文本正确更改但按钮不是黑色?
谢谢!
确保您的按钮“类型”设置为系统。如果它设置为自定义,则可能是您的按钮颜色没有改变的原因。这就是发生在我身上的事情,将类型更改为 System 修复了它。
它为您突出显示的状态颜色着色。当您点击/单击 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;
如其他答案中所述,色调不适用于自定义按钮类型。确保明确声明按钮类型。不要只使用 [UIButton alloc] init]
这将起作用:
UIButton *mybutton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[mybutton setImage:[UIImage imageNamed:@"myImage"] forState:UIControlStateNormal];
mybutton.tintColor = [ODTheme blueTintColor];
今天,我也遇到了这个问题。我使用委托来解决它。
[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");
}
应该试试这个方法:
- (void)setTitleColor:(UIColor *)color
forState:(UIControlState)state
在 iOS 13 中,您可以为图像着色,然后将其设置为按钮:
let coloredImage = UIImage().withTintColor(UIColor.red)
UIButton().setImage(coloredImage, for: .normal)
如果您的 UIButton 类型是系统,那么只有 tint color 属性有效。因此,首先您需要将按钮类型设置为系统,然后为特定状态应用色调颜色。
let btn = UIButton.init(type: .system)
[btn setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
要更改 Button 文本的颜色,您可以使用:
resetButton.setTitleColor(UIColor.blackColor(), forState: .Normal)
或 OBJ-C:
- (void)setTitleColor:(UIColor *)color
forState:(UIControlState)state
只需使用:
[yourButton setBackgroundImage:[yourButton.currentBackgroundImage imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate] forState:UIControlStateNormal];
[yourButton setTintColor:[UIColor blackColor]];
斯威夫特 4:
yourButton.setTitleColor(UIColor.white, for: .normal)