如何为状态UIControlStateHighlighted设置按钮标签文本颜色

kri*_*han 8 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];   
Run Code Online (Sandbox Code Playgroud)

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

Boc*_*ica 22

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

[button1 setTitleColor:[UIColor redColor] forState:UIControlStateHighlighted];
Run Code Online (Sandbox Code Playgroud)

这是因为您可以在不创建Label的情况下工作,并将其添加为上面提到的子视图.


Mau*_*lik 10

你可以添加类似UIControlStateHighlighted状态的目标UIButton

[button1 addTarget:self action:@selector(buttonHighlighted:) forControlEvents:UIControlStateHighlighted];
Run Code Online (Sandbox Code Playgroud)

buttonHighlighted方法中,您可以更改标签文本的颜色

- (void) buttonHighlighted:(id)sender
{
  //code here
}
Run Code Online (Sandbox Code Playgroud)

希望它能给你一个想法.