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

Posted

技术标签:

【中文标题】如何为状态 UIControlStateHighlighted 设置按钮标签文本颜色【英文标题】:How to set the buttons label text color for state UIControlStateHighlighted 【发布时间】:2011-10-18 11:58:19 【问题描述】:

我正在创建一个 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];   

当按钮被突出显示时,任何正文可以帮助我更改文本颜色吗?

【问题讨论】:

我可以在调用 button1clicked 方法时更改文本颜色,但我想要的是在高亮按钮时更改文本颜色 “当按钮突出显示时我想更改标签文本颜色”是什么意思?你的意思是什么时候点击按钮,点击之后的文字应该是原来的样子? 那是 UIControlStateHighlighted 我想改变文本颜色。如果您当时将鼠标悬停在按钮上,我想更改文本颜色 【参考方案1】:

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

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

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

【讨论】:

这只有在你将两种颜色都设置为不同状态时才有效,否则每个状态的文本颜色都会变成红色。【参考方案2】:

您可以为UIButtonUIControlStateHighlighted 状态添加目标

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

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

- (void) buttonHighlighted:(id)sender

  //code here

希望它能给你一个想法。

【讨论】:

为什么不使用 UIButton 的文本标签?为什么要在按钮上添加另一个标签? 我正在使用自定义按钮。因为我有 UIcontrolstatenormal 的白色背景和 UIcontrolstateHighlighted 的粉红色背景。那就是我没有使用 Uibuttons 文本标签。我还有另一个问题,即单击按钮后,它的背景变为白色,并且文本由于白色而被隐藏。你能发给我关于如何使用自定义按钮的 Uibuttons 文本标签的示例代码【参考方案3】:

对于选定的颜色

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

对于高亮颜色

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

【讨论】:

以上是关于如何为状态 UIControlStateHighlighted 设置按钮标签文本颜色的主要内容,如果未能解决你的问题,请参考以下文章

如何为 HTTPS 配置 503 状态?

如何为 Android 同步状态图标设置动画?

如何为 UIButton 设置默认状态图像?

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

如何为添加到收藏夹列表的组件保留状态

Flask,如何为ajax调用返回成功状态码