快速代码中的自动布局问题

时间:2015-07-30 06:31:03

标签: swift autolayout

want to create UI such that

想要创建UI,使得约束应该使得两个按钮之间的空间与侧边的距离应该相同。

我正在使用以下代码

  func addConstraintsToBottomButtons()
  {
    let viewFrame = self.view.frame
    let availableWidth:CGFloat = viewFrame.width - 60
    let buttonDistance:CGFloat = availableWidth/3
    let buttonWidth:CGFloat = 30.0
    let buttonHeight:CGFloat = 30.0

    var BtnOne = UIButton()
    BtnOne.setTranslatesAutoresizingMaskIntoConstraints(false)
    self.view.addSubview(BtnOne)
    BtnOne.backgroundColor = UIColor.redColor()


    var btnTwo = UIButton()
    btnTwo.setTranslatesAutoresizingMaskIntoConstraints(false)
    self.view.addSubview(btnTwo)
    btnTwo.backgroundColor = UIColor.yellowColor()


//Views to add constraints to
//Metrics for Visual Format string

    // Button One Constraint..
    self.view .addConstraint(NSLayoutConstraint(item: BtnOne, attribute: NSLayoutAttribute.Leading, relatedBy: NSLayoutRelation.Equal, toItem: bottonView, attribute: NSLayoutAttribute.Leading, multiplier: 1, constant: buttonDistance))

    self.view .addConstraint(NSLayoutConstraint(item: BtnOne, attribute: NSLayoutAttribute.CenterY, relatedBy: NSLayoutRelation.Equal, toItem: bottonView, attribute: NSLayoutAttribute.CenterY, multiplier: 1, constant: 0))

    self.view .addConstraint(NSLayoutConstraint(item: BtnOne, attribute: NSLayoutAttribute.Width, relatedBy: NSLayoutRelation.Equal, toItem: nil, attribute: NSLayoutAttribute.NotAnAttribute, multiplier: 0, constant: buttonWidth))

    self.view .addConstraint(NSLayoutConstraint(item: BtnOne, attribute: NSLayoutAttribute.Height, relatedBy: NSLayoutRelation.Equal, toItem: nil, attribute: NSLayoutAttribute.NotAnAttribute, multiplier: 0, constant: buttonHeight))


    // Button Two Constraint...

    self.view .addConstraint(NSLayoutConstraint(item: btnTwo, attribute: NSLayoutAttribute.Trailing, relatedBy: NSLayoutRelation.Equal, toItem: bottonView, attribute: NSLayoutAttribute.Trailing, multiplier: 1, constant: -(buttonDistance)))

    self.view .addConstraint(NSLayoutConstraint(item: btnTwo, attribute: NSLayoutAttribute.CenterY, relatedBy: NSLayoutRelation.Equal, toItem: bottonView, attribute: NSLayoutAttribute.CenterY, multiplier: 1, constant: 0))

    self.view .addConstraint(NSLayoutConstraint(item: btnTwo, attribute: NSLayoutAttribute.Width, relatedBy: NSLayoutRelation.Equal, toItem: nil, attribute: NSLayoutAttribute.NotAnAttribute, multiplier: 0, constant: buttonWidth))

    self.view .addConstraint(NSLayoutConstraint(item: btnTwo, attribute: NSLayoutAttribute.Height, relatedBy: NSLayoutRelation.Equal, toItem: nil, attribute: NSLayoutAttribute.NotAnAttribute, multiplier: 0, constant: buttonHeight))
 }

1 个答案:

答案 0 :(得分:0)

让我建议一个可以完成您想要的工作的解决方法: 在故事板中创建三个视图/将它们拉出您获取按钮的相同位置 - 并将它们用作屏幕边缘和按钮之间的缓冲:锚定到边缘,等宽度和低于实际按钮的水平压缩应该按照预期行事。