突出显示iOS 7时,为UIButton设置标题颜色

时间:2013-11-02 04:26:56

标签: ios iphone objective-c uibutton ios7

我在viewController中有以下代码,所有的出口和动作都正确连接。 WHITEPURPLE是我为其定义常量的UIColors。我还将UIWindow的{​​{1}}设置为tintColor,然后传播到按钮。

PURPLE

当我点击按钮时,文字不像我在- (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的优势。不确定这是怎样的正确方法。提前谢谢。

normalState highlightedState

2 个答案:

答案 0 :(得分:61)

你不应该使用UIControlStateSelected吗?

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

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

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

那应该是你的白色文字背景。

答案 1 :(得分:-1)

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

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

当你想要按钮标题coloe red而不是make btnCustom.selected = NO并且如果你想要带有白色标题颜色的按钮比make btnCustom.selected = YES