使用 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】:您必须先设置myLabel
s 文本颜色,然后才能将其添加为子视图。
否则,您将不得不枚举按钮的子视图并更改每个添加标签的文本颜色。
更新:
您可以按如下方式更改按钮标题的字体:
myButton.titleLabel!.font = UIFont(name: "...", 10)
您可以按如下方式更改按钮的标题颜色:
colorsBtn.setTitleColor(UIColor.brownColor(), forState: UIControlState.Highlighted)
【讨论】:
我添加了子视图。我想为控件事件 UIControlStateHighlighted 更改它们的每种字体颜色,但我意识到为按钮添加操作可能要容易得多。以上是关于使用 UIControlStates 的 UIButton 多个标签的主要内容,如果未能解决你的问题,请参考以下文章