我想知道如何将UIButton的标题颜色更改回默认值。
我有一个按钮,我更改了标题颜色以表示某些内容已打开,就像这样;
[cell.offStateSwitch setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
然后当它关闭时,我想将其更改回默认颜色。
我无法弄清楚如何获取UIButton的默认系统颜色。我发现许多人通过强制使用特定的RGB值来做到这一点,但在不同版本的iOS中这不一定正确。
答案 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];
}