如何设置状态UIControlState突出显示的按钮标签文本颜色

时间:2011-10-18 11:58:20

标签: iphone objective-c ipad

我正在创建一个iPhone应用程序,其中我有一个自定义按钮。我通过创建标签并将其添加为子视图来设置按钮标题。现在当按钮突出显示时,我想更改标签文本颜色。

这是我的代码,

UIButton *button1= [UIButton buttonWithType:UIButtonTypeCustom];
    [button1 setFrame:CGRectMake(68,162, 635, 101)];    
    [button1 setImage:[UIImage imageNamed:@"startwithouttext.png"] forState:UIControlStateNormal];
    [button1 setImage:[UIImage imageNamed:@"startactivewithouttext.png"] forState:UIControlStateHighlighted];

   UILabel *buttonLabel = [[UILabel alloc]  initWithFrame:CGRectMake(button1.bounds.origin.x+50, button1.bounds.origin.y+20, button1.bounds.size.width-100, button1.bounds.size.height-40)];

    [buttonLabel setFont:[UIFont fontWithName:@"Helvetica" size:28]];
    buttonLabel.backgroundColor=[UIColor clearColor];
    buttonLabel.textColor=[UIColor colorWithRed:83.0/255.0 green:83.0/255.0 blue:83.0/255.0 alpha:1.0];
    buttonLabel.highlightedTextColor=[UIColor whiteColor];
    buttonLabel.text = @"Long text string";
    [button1 addSubview:buttonLabel];
    [button1 bringSubviewToFront:buttonLabel];
    [button1 setContentVerticalAlignment:UIControlContentVerticalAlignmentCenter];
    [button1 setContentHorizontalAlignment:UIControlContentHorizontalAlignmentCenter];
    [button1 addTarget:self action:@selector(button1clicked:) forControlEvents:

[mainView button1];   

当按钮突出显示时,任何正文都可以帮我改变文字颜色吗?

3 个答案:

答案 0 :(得分:22)

在StackOverflow上的另一个问题中找到答案: UIButton color issues

[button1 setTitleColor:[UIColor redColor] forState:UIControlStateHighlighted];

如果您可以在不创建Label的情况下工作并将其添加为上面提到的子视图。

答案 1 :(得分:10)

您可以为UIControlStateHighlighted状态UIButton添加目标

[button1 addTarget:self action:@selector(buttonHighlighted:) forControlEvents:UIControlStateHighlighted];

并且在buttonHighlighted方法中,您可以更改标签文字的颜色

- (void) buttonHighlighted:(id)sender
{
  //code here
}

希望它能给你一个想法。

答案 2 :(得分:1)

对于SelectedColor

[yourButton setTitleColor:[UIColor purpleColor] forState:UIControlStateSelected];

对于HighlightedColor

[yourButton setTitleColor:[UIColor orangeColor] forState:UIControlStateHighlighted];