UIButton默认标题颜色iOS7

时间:2013-09-23 05:03:31

标签: ios uibutton

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

我有一个按钮,我更改了标题颜色以表示某些内容已打开,就像这样;

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

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

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

5 个答案:

答案 0 :(得分:11)

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

[myButton setTitleColor:nil forState:UIControlStateNormal];

答案 1 :(得分: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

答案 2 :(得分:5)

button.tintColor = nil

[button setTintColor: null]
  

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

     

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

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

答案 3 :(得分:1)

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

只需定义defaultColor:

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

defaultColor = [button titleColorForState: UIControlStateNormal];

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

答案 4 :(得分: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];
}