UIButton约束失败,但适用于UILabel

时间:2016-04-30 06:29:57

标签: ios xcode swift uibutton nslayoutconstraint

我正在尝试以实用方式向UIView添加按钮。此代码将使用UI标签,但在将其与按钮一起使用时,约束将失败。我怎样才能做到这一点?感谢。

let homeButton =  UIButton(frame: CGRectZero)
    homeButton.setTitle("Home", forState: .Normal)
    homeButton.titleLabel!.textAlignment = NSTextAlignment.Center
    homeButton.titleLabel!.textColor = UIColor.whiteColor()
    homeButton.titleLabel!.translatesAutoresizingMaskIntoConstraints = false
    containerView.addSubview(homeButton)

    let buttonWidthConstraint = NSLayoutConstraint(item: homeButton, attribute: .Width, relatedBy: .Equal, toItem: self.containerView, attribute: .Width, multiplier: 0.5, constant: 0)
    containerView.addConstraint(buttonWidthConstraint)
    let buttonHeightConstraint = NSLayoutConstraint(item: homeButton, attribute: .Height, relatedBy: .Equal, toItem: self.containerView, attribute: .Height, multiplier: 0.5,constant: 0)
    containerView.addConstraint(buttonHeightConstraint)

    let buttonXConstraint = NSLayoutConstraint(item: homeButton, attribute: .CenterX, relatedBy: .Equal, toItem: self.containerView, attribute: .CenterX, multiplier: 1, constant: 0)
    let buttonYConstraint = NSLayoutConstraint(item: homeButton, attribute: .CenterY, relatedBy: .Equal, toItem: self.containerView, attribute: .CenterY, multiplier: 1, constant: 0)
    containerView.addConstraint(buttonXConstraint)
    containerView.addConstraint(buttonYConstraint)

1 个答案:

答案 0 :(得分:0)

您应该使用homeButton.translatesAutoresizingMaskIntoConstraints = false代替homeButton.titleLabel!.translatesAutoresizingMaskIntoConstraints = false

因为您应该为button禁用自动调整屏幕,而不是按钮titleLabel

希望这会有所帮助:)