【问题标题】:iOS: Auto Layout: Two buttons side-by-side when there's enough space, otherwise on top of one anotheriOS:自动布局:当有足够的空间时,两个按钮并排,否则在另一个之上
【发布时间】:2014-06-26 20:14:49
【问题描述】:

寻找一种自动布局解决方案,其中两个按钮在有足够空间的情况下并排放置,否则(当视图以有限的宽度显示时)彼此重叠。

我什至不知道从哪里开始考虑自动布局。任何帮助表示赞赏!

【问题讨论】:

标签: ios xcode autolayout


【解决方案1】:

我想这是自动布局和 NSLayoutConstraint 属性常量之间的组合,您可以在 IB/Storyboard 中设置约束,然后单击将每个 uibutton 的尾随空间到容器约束拖动到视图控制器上,作为一些命名的 IBOutlet 属性. (即 myconstraint1、myconstraint2。)

然后,在您可以确定有限宽度的某些条件下(旋转事件,添加新视图?),您将两个约束常量设置为相同的值,例如self.myconstraint1.constant = self.myconstraint2.constant = someValue。

不知道代码,我当然不能告诉你数学,我也不知道要重置什么,但否则,以编程方式设置 nslayocontraint.constant 应该会给你两个 uibutton 视图重叠的预期效果另一个水平。

同样,要移动它们以使 Y 坐标不同,您可以使用类似的方法,对一个或两个按钮使用垂直间距到底部布局约束。

【讨论】:

  • 我还建议将一个对象添加到您的情节提要中(它在列表中,右侧有视图标签等)并将其转换为 ResizeHandler。因此,您不会用所有仅用于弹性布局的特定情况的功能和插座来淹没您的主 ViewController。
  • 是的,这行得通。在我的故事板中,我并排创建了按钮。关键是为每个按钮创建超级视图(容器)的尾随约束。并为每个创建底部(或顶部)约束。将约束连接到插座,以便您可以从代码中引用它们。然后,每当您希望按钮彼此重叠(而不是并排)时,将两个尾随约束设置为相同的值,并通过将底部约束设置为不同的值来垂直偏移按钮。像魅力一样工作。谢谢!
  • 很高兴为您提供帮助。学习将自动布局与 nslayoutconstraint 常量合并确实有助于扩展我在移动设备上概念化设计可能性的方式。
猜你喜欢
  • 2015-03-24
  • 2011-11-07
  • 2016-06-24
  • 2014-09-14
  • 1970-01-01
  • 2017-12-08
  • 2013-01-31
  • 2014-12-08
相关资源
最近更新 更多