31

我在 viewController 中有以下代码,所有插座和操作都正确连接。WHITEPURPLE是我为其定义了常量的 UIColors 。我还将UIWindow's设置tintColorPURPLE并向下传播到按钮。

- (void)viewDidLoad {
    [super viewDidLoad];
    [button setTitleColor:[UIColor whiteColor] forState:UIControlStateHighlighted];
    button.backgroundColor = WHITE;
    button.layer.borderWidth = 1.0;
    button.layer.masksToBounds = YES;
    button.layer.cornerRadius = 5.0;
    button.layer.borderColor = PURPLE.CGColor;
}

-(IBAction) buttonTouchDown:(id)sender {
    button.backgroundColor = PURPLE;
    button.layer.borderColor = WHITE.CGColor;
}

-(IBAction) buttonTouchUpOutside:(id)sender {
    button.backgroundColor = WHITE;
    button.layer.borderColor = PURPLE.CGColor;
}

-(IBAction) buttonTouchUpInside:(id)sender {
    button.backgroundColor = WHITE;
    button.layer.borderColor = PURPLE.CGColor;
}

当我单击按钮时,文本不会像我告诉它的那样变白viewDidLoad

这里有一些我可以剪得更好的截图!正如您在突出显示的状态中看到的那样,它不是白色的,而是白色和紫色的混合。我需要使用UIButtonTypeCustom吗?我听说如果我这样做,我将无法获得 iOS 7 的优势tintColor。不确定解决此问题的正确方法是什么。提前致谢。

正常状态 高亮状态

4

2 回答 2

60

你不应该使用 UIControlStateSelected 吗?

好的,我只是自己尝试了一下,它不想很好地工作。

您需要将按钮样式设置为自定义。UIButton 系统风格做了很多你无法改变的事情。突出显示的按钮状态默认为其自己的实现,如果您的 tintcolor 是较轻的版本。

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setTitleColor:self.view.tintColor forState:UIControlStateNormal];
[button setTitleColor:[UIColor whiteColor] forState:UIControlStateSelected];

那应该为您提供白色文本背景。

于 2013-11-02T09:40:56.203 回答
-1

希望这是您问题的答案,或者在选择按钮时仍然难以设置标题颜色的人。

[btnCustom setTitleColor:[UIColor whiteColor] forState: UIControlStateSelected];
[btnCustom setTitleColor:[UIColor redColor] forState: UIControlStateNormal];

当您希望按钮标题颜色为红色而不是使 btnCustom.selected = NO 并且如果您希望按钮具有白色标题颜色而不是使 btnCustom.selected = YES

于 2016-02-11T13:12:29.037 回答