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

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

[myButton addSubview: myLabel];

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

[myButton setTitleColor:someColor forState:UIControlStateHighlighted]

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

【问题讨论】:

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

标签: ios objective-c uibutton uicontrolstate


【解决方案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 更改它们的每种字体颜色,但我意识到为按钮添加操作可能要容易得多。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-08
    • 2010-11-25
    • 2019-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多