【问题标题】:UIButton is not highlighting when pressed按下时 UIButton 不突出显示
【发布时间】:2017-05-15 01:42:12
【问题描述】:

我的UIButton 实例在按下时未突出显示。我很确定我的代码是正确的。这只发生在我正在使用的这个特定类中。我猜是因为该函数已被我遵守的协议覆盖。

我想让UIButton 突出显示默认方式,但我必须手动完成。如何在按下时强制突出显示按钮,它的默认设置是什么(在颜色方面),以便与所有其他按钮保持一致?

这是我当前的代码:

    let backButton = UIButton()
    backButton.setTitle("back", for: .normal)
    backButton.setTitleColor(UIColor.black, for: .normal)
    backButton.adjustsImageWhenHighlighted = true
    RevealBar.addSubview(backButton)
    backButton.snp.makeConstraints { (make) -> Void in
        make.center.equalTo(RevealBar)
        make.width.equalTo(RevealBar)
        make.height.equalTo(RevealBar)
    }

    backButton.addTarget(self, action: #selector(self.goBack), for: .touchUpInside)

【问题讨论】:

  • 尝试使用UIButton(type buttonType: UIButtonType.system)进行初始化
  • @matt 我必须设置titlecolor,因为默认情况下,文本颜色是白色的。但是现在我将类型更改为 .system 没有它也可以工作
  • 将其移至答案

标签: ios swift uibutton


【解决方案1】:

使用UIButton(type buttonType: .system) 而不是UIButton() 初始化按钮。

当您使用后者时,它不会正确设置按钮突出显示,因为默认按钮类型是 UIButtonType.custom,它旨在作为没有任何默认样式或突出显示行为的空白板。

注意,来自Apple's UIButton documentation

按钮的类型定义了它的基本外观和行为。您指定 在创建时使用 init(type:) 方法或 在您的故事板文件中创建按钮后,无法更改 它的类型。 最常用的按钮类型是自定义和 系统类型,但在适当的时候使用其他类型。

【讨论】:

    【解决方案2】:

    除了let backButton = UIButton() 这一行之外,您的代码是正确的。这里你需要说按钮类型。您可以使用 FrameButton Type

    进行初始化

    【讨论】:

    • 如果您使用框架初始化程序进行初始化,则类型仍然是自定义的,并且按钮不会具有 OP 所需的默认突出显示。
    • 正如我在answer 中指出的那样,在创建按钮后无法设置类型(但可以随时更改框架)。
    猜你喜欢
    • 2020-05-06
    • 2011-09-14
    • 2014-02-03
    • 2016-10-27
    • 2020-10-23
    • 2013-06-19
    • 1970-01-01
    • 1970-01-01
    • 2017-05-20
    相关资源
    最近更新 更多