【问题标题】:Interface builder constraints for enlarging buttons with the screen size使用屏幕尺寸放大按钮的界面构建器约束
【发布时间】:2015-11-06 06:46:28
【问题描述】:

对于界面构建器来说真的很新。我有 5 个均匀分布的按钮。在 iPhone5 屏幕中设置。我希望按钮和边界之间的间距保持不变,但按钮的大小会随屏幕增大(保持相同的纵横比)。

我将如何为此设置约束?我是否需要在按钮之间放置隐形垫片或其他东西才能做到这一点?

【问题讨论】:

  • 总是会有 7 个按钮?

标签: ios interface-builder constraints


【解决方案1】:

这样做:

  1. 将所有按钮放入UIView

  2. 将约束设置为 UIViewleadingtopTrailingheight 和 宽度。

  3. 将 UIView 内所有按钮的约束设置为 topleadingwidthheight .

  4. 然后选择第一个按钮和UIView一起,并使它们宽度相等并根据您需要的按钮数量设置此约束的乘数,此时将优先级设置为@ 987654324@ 宽度限制为 900(这很重要)。与按钮的宽度限制相同。

  5. 现在选择所有按钮并将它们设置为等宽,然后根据按钮的宽度设置此约束的乘数。

  6. 删除除第一个按钮外的所有按钮的宽度限制。

【讨论】:

  • 如何选择第一个按钮和UIView一起?命令在左窗格中单击它们?也很难找到乘数。
【解决方案2】:

查看层次结构:

最终输出:

解决方案:

我已经开始从中间的按钮(即 Button4)实现约束

1) Holder View 的约束

HolderView.centerY = superview.centery

HolderView 对超级视图的尾随/前导约束

2) Button4 上的约束

Button4.width = Button4.height

Button4.width = HolderView.superview.width * (1/7) - 10
(是的,它不是错字 Button4.width 是相对于屏幕宽度而不是其持有者视图的宽度)

Button4.trailing 到 Spacer,Button4.leading 到 Spacer

Button4 对 superview 的底部/顶部约束

使所有其他按钮等于 Button4(中间的按钮)

3)如果您需要对任意数量的按钮进行相同的排列,您只需要使用中心按钮的宽度限制

示例项目:

链接到Sample Project

注意:此解决方案仅适用于奇数个按钮

【讨论】:

  • 如何输入Button4.width = HolderView.superview.width * (1/7) - 10?我需要点击约束来编辑它吗?
  • 是的,在乘数中你会提到 1:7,在常数 -10 中,它也可以在测试项目中看到。一般约束方程看起来像 A.attribute = B.Attribute * multiplier + constant
  • 啊,我明白了。但是,您如何相对于 HolderView.superview.width 进行宽度约束?我首先单击中间按钮,然后为宽度添加约束。然后我点击宽度约束,但没有乘数选项。
  • 您不会添加宽度约束,宽度约束是固定约束,它们不会根据屏幕尺寸缩放,您将使用纵横比约束
  • 您说让所有按钮都等于按钮 4。您是物理复制和粘贴按钮还是只是按照每个按钮的说明再次操作?
猜你喜欢
  • 2016-02-09
  • 1970-01-01
  • 1970-01-01
  • 2019-01-14
  • 1970-01-01
  • 2018-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多