UIButton 颜色问题

3
我该如何更改UIButton上文本的颜色。这是我的当前代码:
    UIButton *b1 = [[UIButton alloc] init];
    b1.frame = CGRectMake(280,395,30,30);
    [[b1 layer] setCornerRadius:8.0f];
    [[b1 layer] setMasksToBounds:YES];
    [[b1 layer] setBorderWidth:1.0f];
    [[b1 layer] setBackgroundColor:[botCol CGColor]];
    b1.titleLabel.font = [UIFont boldSystemFontOfSize:24];
    [b1 setTitleColor:[UIColor redColor] forState:UIControlEventAllEvents];
    [b1 addTarget:self action:@selector(NextButtonPressed:) forControlEvents:UIControlEventTouchUpInside];
    [b1 setTitle:@">" forState:UIControlStateNormal];
    [self.view addSubview:b1];

这是它的外观(忽略背景颜色和其他东西):

在此输入图片描述

现在,我该如何让箭头变成红色?如上所述,我已经有了以下内容:

[b1 setTitleColor:[UIColor redColor] forState:UIControlEventAllEvents];

但它没有起作用。

2个回答

8
尝试设置单个事件,例如:
[b1 setTitleColor:[UIColor redColor] forState:UIControlStateNormal];

现在,如果我想让用户触摸按钮时背景变为白色,代码会是什么样子? - CodeGuy
@reising:我认为你无法使用事件来触发它。我所能想到的唯一解决办法是将其添加到代码中触发的操作(NextButtonPressed)中。[[b1 layer] setBackgroundColor:[UIColor greenColor].CGColor]; 但是,你必须将b1变成实例变量才能在原始方法之外访问它。 - sudo rm -rf

1
你的原始代码无法工作的原因是因为你传递了一个 UIControlEvents 参数而不是一个 UIControlState 参数。
[b1 setTitleColor:[UIColor redColor] forState:UIControlStateNormal];

这将设置正常状态下的颜色,除非您为其他状态设置颜色,否则它将在所有状态下持续存在。要更改其他状态的颜色,只需使用其他状态(UIControlStateNormalUIControlStateHighlightedUIControlStateDisabledUIControlStateSelected)调用相同的方法:

[b1 setTitleColor:[UIColor blueColor] forState:UIControlStateSelected];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接