以编程方式快速定义UIButton

时间:2017-04-26 18:46:00

标签: ios swift uibutton

我正在尝试以编程方式添加按钮,如下所示。

    lazy var myButton: UIButton = {
       let button = UIButton(type: .System)
       button.translatesAutoresizingMaskIntoConstraints = false
       button.backgroundColor = UIColor.blueColor()
       button.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height / 2)
       button.addTarget(self, action: "buttonAction", forControlEvents: .TouchUpInside)
       return button
    }()

我的目的是创建一个按钮,其视图的宽度和高度是视图高度的一半。而且我也有这个按钮的LeftAnchor,RightAnchor,WidthAnchor,TopAnchor约束。

我的viewDidLoad()

中有以下代码
view.addSubview(myButton)

当我尝试运行此代码时,我无法确切地看到我想在模拟器上拥有的内容。 我想看按钮width = view'按钮的宽度和高度=视图高度/ 2

相反,我看到模拟器左上方的小按钮。我该如何解决这个问题?

谢谢!

1 个答案:

答案 0 :(得分:1)

更好的选择是使用AutoLayoutConstraints。

var myButtonHeight: NSLayoutConstraint

view.addSubview(myButton)
myButton.widthAnchor.constraint(equalTo: view.widthAnchor).isActive = true
myButtonHeight = myButton.heightAnchor.constraint(equalTo: view.heightAnchor, multiplier: 0.5)
myButtonHeight.isActive = true

如果更改按钮高度onTouchDown,如果它是onTouchUpInside导致的切换,则无法从您的评论中清楚,但无论如何

myButtonHeight.constant = (buttonShouldBeTall) ? 20 : 0
view.setNeedsLayout()

请记住,您还需要定位前导/尾随/中心X锚点和前导/尾随/中心锚点,具体取决于您需要它的位置