8

我想知道如何将 UIButton 的标题颜色更改回默认值。

我有一个按钮,我可以更改标题颜色以指示某事处于开启状态,就像这样;

[cell.offStateSwitch setTitleColor:[UIColor redColor] forState:UIControlStateNormal];

然后当它关闭时,我想将其更改回默认颜色。

我不知道如何获取 UIButton 的默认系统颜色。我发现很多人通过强制使用特定的 RGB 值来做到这一点,但这在不同版本的 iOS 中不一定正确。

4

5 回答 5

12

将颜色设置为 nil,它的行为将恢复到您更改它之前的状态,包括正确响应警报。

[myButton setTitleColor:nil forState:UIControlStateNormal];
于 2014-03-10T23:37:06.620 回答
9

我假设您的意思是要将文本设置回tintColor。如果你只想要当前的 tintColor,你可以这样做:

[button setTitleColor:button.tintColor forState:UIControlStateNormal];

但是,tintColor 应该在某些情况下自动更改,例如在弹出警报时。为了实现这一点,我认为您需要定义自己的按钮:

@interface MyButton : UIButton
@end

@implementation MyButton

- (void) tintColorDidChange
{
    [self setTitleColor:self.tintColor forState:UIControlStateNormal];
    [super tintColorDidChange];
}

@end

在这种情况下,我建议您使用所选状态为您的特殊颜色:

[button setTitleColor:[UIColor redColor] forState:UIControlStateSelected];

button.selected = YES正如您所说,并在“某事开启”时进行设置。

于 2013-11-01T13:56:46.390 回答
4
button.tintColor = nil

或者

[button setTintColor: null]

在 iOS v7.0 中,UIView 的所有子类都从基类中派生出它们的 tintColor 行为。有关更多信息,请参阅 UIView 级别的 tintColor 讨论。

此属性对 UIButtonTypeCustom 类型的按钮没有默认效果。对于自定义按钮,您必须自己实现与 tintColor 相关的任何行为。

将 UIButton 的 tintColor 设置为 nil (null) 将重置其标题的颜色

于 2015-02-03T20:20:16.380 回答
1

iOS中没有默认标题颜色的属性,你可以简单的获取。

只需定义默认颜色:

UIColor* defaultColor; 然后在您的viewDidLoad放置或视图被初始化的任何地方:

defaultColor = [button titleColorForState: UIControlStateNormal];

然后您将defaultColor作为默认标题颜色。

于 2013-09-23T05:32:09.193 回答
0

在 cellForRowAtIndexPath 委托中添加以下代码......

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

cell.button.tag=indexPath.row+100;

[cell.button addTarget:self selector:@selector(changeButtonTitle:) forControlEvents:UIcontrolTouchUpEventInside];

然后在按钮操作中添加以下代码

-(void)changeButtonTitle:(UIButton *)button
{
    UITableViewCell *cell=(UITableViewCell *)button.superview.superview;
    NSIndexpath *indexpath=[self.yourtableview indexPathForCell:cell];
    UIButton *tempButton=(UIButton *)[cell viewWithtag:indexPath.row+100];
    [tempButton setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
}
于 2013-09-23T05:42:44.963 回答