我想知道如何将 UIButton 的标题颜色更改回默认值。
我有一个按钮,我可以更改标题颜色以指示某事处于开启状态,就像这样;
[cell.offStateSwitch setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
然后当它关闭时,我想将其更改回默认颜色。
我不知道如何获取 UIButton 的默认系统颜色。我发现很多人通过强制使用特定的 RGB 值来做到这一点,但这在不同版本的 iOS 中不一定正确。
将颜色设置为 nil,它的行为将恢复到您更改它之前的状态,包括正确响应警报。
[myButton setTitleColor:nil forState:UIControlStateNormal];
我假设您的意思是要将文本设置回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
正如您所说,并在“某事开启”时进行设置。
button.tintColor = nil
或者
[button setTintColor: null]
在 iOS v7.0 中,UIView 的所有子类都从基类中派生出它们的 tintColor 行为。有关更多信息,请参阅 UIView 级别的 tintColor 讨论。
此属性对 UIButtonTypeCustom 类型的按钮没有默认效果。对于自定义按钮,您必须自己实现与 tintColor 相关的任何行为。
将 UIButton 的 tintColor 设置为 nil (null) 将重置其标题的颜色
iOS中没有默认标题颜色的属性,你可以简单的获取。
只需定义默认颜色:
UIColor* defaultColor;
然后在您的viewDidLoad
放置或视图被初始化的任何地方:
defaultColor = [button titleColorForState: UIControlStateNormal];
然后您将defaultColor作为默认标题颜色。
在 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];
}