2016-12-30 72 views
1

我的UIButton实例在按下时没有突出显示。我很确定我的代码是正确的。这只发生在我正在使用的这个特定的类中。我在猜测,因为该函数已被我遵守的协议覆盖。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) 
+1

尝试使用初始化'的UIButton(类型按钮类型:UIButtonType.system)初始化' – shim

+0

谢谢@shim它的工作 – slimboy

+0

@马特,我不得不默认,因为settitlecolor,文本颜色是白色的..但现在我改变了类型为.system它没有它的作品 – slimboy

回答

5

初始化使用UIButton(type buttonType: .system)代替UIButton()按钮。

当您使用后者时,它将不会正确设置按钮高亮显示,因为默认按钮类型为UIButtonType.custom,该按钮用作空白平板,没有任何默认样式或高亮行为。

注意,从Apple's UIButton documentation

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

0

您的代码是正确的,除了这一行let backButton = UIButton()。在这里你需要说按钮类型。或者你可以用框架按钮类型

+0

如果您使用框架初始值设定项进行初始化,该类型仍然是自定义的,并且该按钮将不会有OP所需的默认突出显示。 – shim

+0

正如我在我的[答](http://stackoverflow.com/a/41401769/1032372)中注意到的,在创建按钮后无法设置类型(但可以随时更改该框架) 。 – shim