【问题标题】:Position uibuttons with auto-layout Swift使用自动布局 Swift 定位 uibutton
【发布时间】:2015-09-22 13:34:51
【问题描述】:

我有一个uiview 和两个uibuttons
问题是 - 我无法理解如何使用auto-layout constraints 来按以下方式定位它们

提前感谢您的任何见解!

【问题讨论】:

  • 这是不可能的。您需要根据屏幕大小保持一个动态约束。例如。 15%-[btn1(25%)]---动态距离---[btn2(25%)]-15%
  • @AshishP。让我们假设动态约束方法很好。那我该如何实现呢?
  • 这是针对 Swift 1.2 还是 Swift 2 的?仅限 iOS 9?
  • @Abizern 这是 swift 2.0,我目前正在 iOS9 上测试,但我不希望它独占。

标签: ios swift uibutton autolayout


【解决方案1】:

试试这样的:

   //Individual button Width
    self.view.addConstraint(NSLayoutConstraint(item: button1, attribute: NSLayoutAttribute.Width, relatedBy: NSLayoutRelation.Equal, toItem: self.view, attribute: NSLayoutAttribute.Width, multiplier: 0.25, constant: 0))
    self.view.addConstraint(NSLayoutConstraint(item: button2, attribute: NSLayoutAttribute.Width, relatedBy: NSLayoutRelation.Equal, toItem: self.view, attribute: NSLayoutAttribute.Width, multiplier: 0.25, constant: 0))

    //Button1 left spacing
    self.view.addConstraint(NSLayoutConstraint(item: button1, attribute: NSLayoutAttribute.Leading, relatedBy: NSLayoutRelation.Equal, toItem: self.view, attribute: NSLayoutAttribute.Leading, multiplier: 1, constant: self.view.frame.size.width * 0.15))

    //Button2 Right Spacing
    self.view.addConstraint(NSLayoutConstraint(item: button2, attribute: NSLayoutAttribute.Trailing, relatedBy: NSLayoutRelation.Equal, toItem: self.view, attribute: NSLayoutAttribute.Trailing, multiplier: 1, constant: -self.view.frame.size.width * 0.15))

    //Y placement
    self.view.addConstraint(NSLayoutConstraint(item: button1, attribute: NSLayoutAttribute.CenterY, relatedBy: NSLayoutRelation.Equal, toItem: self.view, attribute: NSLayoutAttribute.CenterY, multiplier: 1, constant: 0))
    self.view.addConstraint(NSLayoutConstraint(item: button1, attribute: NSLayoutAttribute.CenterY, relatedBy: NSLayoutRelation.Equal, toItem: button2, attribute: NSLayoutAttribute.CenterY, multiplier: 1, constant: 0))

此外,您需要重置旋转约束,因为 self.view.frame.size.width 会发生变化。已用于计算约束常数。

【讨论】:

  • 完美运行。谢谢。
【解决方案2】:

如果您不想重置约束,可以尝试像这样设置间距约束:

self.view.addConstraint(NSLayoutConstraint(item: self.view, attribute: NSLayoutAttribute.CenterX, relatedBy: NSLayoutRelation.Equal, toItem: button1, attribute: NSLayoutAttribute.CenterX, multiplier: 0.275, constant: 0))
self.view.addConstraint(NSLayoutConstraint(item: self.view, attribute: NSLayoutAttribute.CenterX, relatedBy: NSLayoutRelation.Equal, toItem: button2, attribute: NSLayoutAttribute.CenterX, multiplier: 0.625, constant: 0))

注意视图的顺序是颠倒的。

我已经在 IB 上成功使用它,应该可以从代码中工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-26
    • 1970-01-01
    • 1970-01-01
    • 2014-07-13
    • 2015-09-01
    • 1970-01-01
    • 2013-08-20
    相关资源
    最近更新 更多