ios - 如何使用自动布局平均分配 UIButton

标签 ios xcode cocoa-touch autolayout

我只希望我的按钮彼此具有相等的空间以及固定的尾随和前导空间。
我有点自动布局菜鸟,所以我不知道如何解决这个问题。我尝试了很多不同的配置,但没有任何效果。任何想法如何解决这个问题?

enter image description here

更新

在 2018 年,StackViews 就是答案。

最佳答案

要根据设备的方向按比例间隔布置多个 View ,请在可见 View 之间创建间隔 View 。正确设置这些间隔 View 的约束,以确保可见 View 能够根据设备的方向保持间隔

脚步:

  • 创建可见 View 。
  • 创建等于可见 View 数加一的间隔 View 。
  • 交替放置您的 View ,从间隔 View 开始。
  • 要分隔两个可见 View ,请将所有 View 按以下模式放置,从屏幕左侧开始向右移动:

  • 垫片1 | View 1 |垫片2 | View 2 |垫片 3。
  • 约束间隔 View ,使它们的长度彼此相等。
  • 创建从第一个间隔 View 到容器 View 的前导约束。
  • 创建从最后一个间隔 View 到容器 View 的尾随约束。
  • 在间隔 View 和可见 View 之间创建约束。

  • 以下示例使用上述任务中的步骤来展示如何按比例放置两个 View 。间隔 View 已针对示例进行了注释,但通常为空且没有背景。首先,创建两个 View 并将它们放在 Storyboard 中。

    enter image description here

    添加三个间隔 View - 一个位于最左侧 View 的左侧,一个位于两个 View 之间,一个位于最右侧 View 的右侧。此时间隔 View 不必具有相同的大小,因为它们的大小将通过约束设置。

    enter image description here

    为间隔 View 创建以下约束:
  • 将间隔 View 2 和间隔 View 3 的宽度约束为等于间隔 View 1 的宽度。
  • 将间隔 View 1 的宽度限制为大于或等于所需的最小宽度。
  • 创建从间隔 View 1 到容器的前导空间到容器约束。
  • 创建从间隔 View 1 到 View 1 的水平间距约束。将此约束设置为优先级为 1000 的小于或等于约束。
  • 创建从间隔 View 2 到 View 1 和 View 2 的水平间距约束。将这些约束设置为优先级为 999 的小于或等于约束。
  • 创建从间隔 View 3 到 View 2 的水平间距约束。将此约束设置为优先级为 1000 的小于或等于约束。
  • 创建从间隔 View 3 到容器的 Trailing Space to Container 约束。

    这些约束创建了两个可见 View 和三个不可见 View (间隔 View )。这些间隔 View 会随着设备方向的变化而自动调整大小,使可见 View 保持按比例间隔,如下两图所示:

  • enter image description here

    enter image description here

    这也是苹果在 this example 中建议的方式。

    除此之外,您在具有这些按钮的按钮容器 View 中执行这些操作,并在您的 View 中对齐该按钮容器 View ,并保持具有相同常数值的相等关系的前导和尾随约束。并根据需要添加剩余的顶部和底部约束。

    我在这里给出了与示例相同的步骤,因为取决于链接的答案可能并不可取。

    关于ios - 如何使用自动布局平均分配 UIButton,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25933555/

    相关文章:

    ios - 要求登录两次

    ios - 如何在 Objective-C 中的按钮上制作 3 个可点击区域

    ios - Firestore 离线未更新

    ios - 将 iOS 平台添加到 ionic cordova 项目中的问题

    ios - 在 iOS 应用程序中为动态下载的图像添加样式

    objective-c - 我打算如何释放从类方法返回的数组?

    iphone - 即使新版本已获批准并准备销售,AppStore 仍会下载旧版本

    iphone - 如何重命名xcode项目文件

    c - MATLAB 编码器精度

    ios - 如何让 UIView 检测到父尺度的变化?