使用 UIControlStates 的 UIButton 多个标签

Posted

技术标签:

【中文标题】使用 UIControlStates 的 UIButton 多个标签【英文标题】:UIButton Multiple Labels Using UIControlStates 【发布时间】:2015-05-20 01:16:47 【问题描述】:

我知道使用 UIButton,我可以添加额外的 UILabel 作为子视图:

[myButton addSubview: myLabel];

并且(至少,使用默认标题标签)我可以在点击时设置其文本颜色:

[myButton setTitleColor:someColor forState:UIControlStateHighlighted]

我的问题是,如何为添加到 UIButton 的其他 UILabel 实现此功能(如果可能的话)?

【问题讨论】:

一个按钮加多个标签的原因是什么? 这样它们可以有不同的字体属性。 您说得对,更改现有标题的属性比添加更多子视图更好。 【参考方案1】:

子类 UIButton 并在其中添加您的附加标签作为实例变量。然后覆盖-setHighlighted-setSelected 以根据需要调整附加标签。 仅供参考 - 你打电话给[myButton setTitleColor...],而不是[myButton.titleLabel setTitleColor...]

【讨论】:

这实际上比我的方法更有意义。谢谢。 如果你只是想改变标题颜色,你不需要添加更多的标签。只需更改现有标签的颜色即可。详情见我的回答。 @PetahChristian 这不是我的问题。我确实想要多个标签,因为我希望它们的格式彼此不同。 您希望一个按钮为单个控件状态显示多个标签?【参考方案2】:

我的做法似乎并不容易,但我意识到我可以为事件UITouchDown 添加一个动作到UIButton,并在动作中相应地更改标签。

【讨论】:

【参考方案3】:

您必须先设置myLabels 文本颜色,然后才能将其添加为子视图。

否则,您将不得不枚举按钮的子视图并更改每个添加标签的文本颜色。

更新:

您可以按如下方式更改按钮标题的字体:

myButton.titleLabel!.font = UIFont(name: "...", 10)

您可以按如下方式更改按钮的标题颜色:

colorsBtn.setTitleColor(UIColor.brownColor(), forState: UIControlState.Highlighted)

【讨论】:

我添加了子视图。我想为控件事件 UIControlStateHighlighted 更改它们的每种字体颜色,但我意识到为按钮添加操作可能要容易得多。

以上是关于使用 UIControlStates 的 UIButton 多个标签的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法在一次更新所有 UIControlStates 的 UIButton 上设置标题?

使用键盘编辑 UIButton 文本

如何使用 RxCocoa 将图像设置为 UIButton

ios11--UIButton

定时器

为 PaintCode 代码创建的 UIButton 添加高亮效果