在容器视图中均匀分布多个视图

2024-03-25

自动布局让我的生活变得困难。理论上,当我切换时它会非常有用,但我似乎一直在与之抗争。

我制作了一个演示项目来尝试寻求帮助。有谁知道如何在调整视图大小时使视图之间的空间均匀增加或减少?

以下是三个标签(手动垂直均匀间隔):

我想要的是让他们在旋转时均匀地调整间距(而不是视图大小)。默认情况下,顶部和底部视图向中心挤压:


看,没有间隔!

根据我原来答案的评论部分的建议,特别是@Rivera的有用建议,我简化了我原来的答案。

我用 gif 来说明这是多么简单。我希望这些 gif 对您有帮助。以防万一您对 gif 有疑问,我在下面包含了旧答案和纯屏幕截图。

指示:

1)添加按钮或标签。我用的是 3 个按钮。

2)将每个按钮的中心 x 约束添加到超级视图:

3)将每个按钮的约束添加到底部布局约束:

4)调整上面 #3 中添加的约束,如下所示:

a)选择约束条件,b)删除常量(设置为 0),c)按如下方式更改乘数:将按钮数量 + 1,并从顶部开始,将乘数设置为按钮计数加1:1, 进而按钮计数加1:2,最后按钮计数加1:3。 (如果您感兴趣,我会在下面的旧答案中解释我从哪里得到这个公式)。

5)这是一个正在运行的演示!

注意:如果您的按钮具有较大的高度,那么您将需要在常量值中对此进行补偿,因为约束来自按钮的底部。


旧答案


尽管Apple的文档和Erica Sadun的优秀书籍(自动布局揭秘)也就是说,可以均匀地间隔视图without垫片。对于您希望均匀间隔的任意数量的元素,这在 IB 和代码中非常简单。您所需要的只是一个称为“部分公式”的数学公式。做起来比解释起来更简单。我将尽力在 IB 中进行演示,但在代码中也同样容易实现。

在相关示例中,您将

1)首先设置每个标签具有中心约束。这非常简单。只需控制从每个标签到底部的拖动即可。

2) 按住 Shift 键,因为您还可以添加我们将要使用的另一个约束,即“底部空间到底部布局指南”。

3)选择“底部空间到底部布局指南”和“容器中水平居中”。对所有 3 个标签执行此操作。

基本上,如果我们将想要确定坐标的标签除以标签总数加 1,那么我们就可以将一个数字添加到 IB 中以获得动态位置。我正在简化公式,但您可以使用它来设置水平间距或同时设置垂直和水平间距。真是超级强大啊!

这是我们的乘数。

标签1 = 1/4 = .25,

标签2 = 2/4 = .5,

标签3 = 3/4 = .75

(编辑:@Rivera 评论说您可以直接在乘数字段中使用比率,然后使用 xCode 进行数学计算!)

4) So, let's select Label1 and select the bottom constraint. Like this: enter image description here

5) 在属性检查器中选择“第二项”。

6) 从下拉列表中选择“反转第一项和第二项”。

7) 将常数和 wC hAny 值清零。 (如果需要,您可以在此处添加偏移量)。

8) 这是关键部分:在乘数字段中添加我们的第一个乘数 0.25。

9) 当您在此处时,将顶部的“第一项”设置为“CenterY”,因为我们希望将其居中于标签的 y 中心。这一切应该是这样的。

10) 对每个标签重复此过程并插入相关乘数:Label2 为 0.5,Label3 为 0.75。这是所有紧凑型设备的所有方向的最终产品!超级简单。我一直在研究很多涉及大量代码和间隔的解决方案。这无疑是我见过的关于该问题的最佳解决方案。

更新:@kraftydevil 补充说,底部布局指南仅出现在故事​​板中,而不出现在 xib 中。在 xibs 中使用“容器底部空间”。接得好!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在容器视图中均匀分布多个视图 的相关文章

  • 在 iPhone 6 和 6 plus 中设置背景图像和图标图像

    如何区分 iPhone 5 和 iPhone 6 和 6 Plus 不同分辨率下的背景图像和图标图像 您必须在图像目录中启用 iOS 8 尺寸 它们在现有项目中默认关闭
  • OS X Server 持续集成 ipa 发行版

    我们有一个配置了 SSL 证书并启用了 Xcode 的 osx 服务器 在将 OSX Server 更新到 3 2 1 和 Xcode 6 0 1 之前 一切正常 我们遇到的问题是 当集成完成后 我们单击设备上的安装按钮 它会尝试下载 但会
  • 在 iOS6 中处理手势识别器

    显然 当你有手势识别器和手势识别器时 iOS 6 会尝试自动处理这种情况 UIButton在同一个地方 用同一个手势被激活 当您想要单击按钮而不是激活手势识别器时 这种新的自动处理可以解决问题 但是产生了一个新问题当您希望手势识别器起作用时
  • 如何复制添加到 StoryBoard 中 ViewController 的 UIView 并保持约束?

    我创建了一个视图 CustomView xib 和一个专用类 CustomView swift 我已通过添加视图并将自定义类设置为 CustomView swift 将其添加到 Storyboard 中的 ViewController 中
  • iOS - 使用隐藏字幕的 AVPlayer

    我正在 iOS 上使用 AVPlayer 来使用 closeCaptionDisplayEnabled 属性 显示电影上的字幕或副标题 hls 或 mp4 但标题不显示任何内容 我不知道为什么 您有什么解决方案可以在电影 hls mp4 上
  • 添加滑动删除UITableViewCell

    我正在制作一个清单应用程序UITableView 我想知道如何添加滑动删除UITableViewCell 这是我的 ViewController swift import UIKit class ViewController UIViewC
  • 在 iOS 中保存加密密钥的安全方法

    在我的 iOS4 应用程序中 我在多个地方使用 AES 加密 整个应用程序必须非常安全 为了做到这一点 我必须在这个应用程序中硬编码几个密钥 然后当我需要加密某些东西时随机选择这些密钥 我的问题是如何存储这些私钥 使用硬编码它们是否安全NS
  • 金属顶点着色器绘制纹理的点

    我想执行 Metal 或 OpenGLES 3 0 着色器 通过混合绘制点基元 为此 我需要将纹理的所有像素坐标作为顶点传递给顶点着色器 该顶点计算要传递给片段着色器的顶点的位置 片段着色器仅输出启用混合的点的颜色 我的问题是 是否有一种有
  • 通过 URL 中的 ID 进行 RestKit 关系映射

    假设我有一个 APIusers 1 items返回一个列表items为了userID 为 1 假设API响应如下 items id 1 description Some item 请注意 响应不包含user id用于关系映射 RestKit
  • iOS 11 文件提供程序扩展中的项目

    我有一个带有文件提供程序扩展名的应用程序 我尝试使用此方法为 ios 11 的新文件应用程序提供支持link https developer apple com documentation fileprovider content and
  • 在 UIButton 中垂直显示标题?

    我是 iPhone 编程新手 我被这个简单的问题困扰了 我有一个UIView with a UIButton在里面 维度为UIButton40x200 靠近左边距 我需要在按钮中垂直显示文本 有没有一种方法可以在不使用任何图像的情况下完成此
  • 使用音频单元录制我的 iPhone 应用程序播放的声音

    我今天有很多有趣的事情iOS 和音频单元并发现了很多有用的资源 包括在内 首先 我对某些事情感到困惑 是否真的有必要创建一个音频图 with 混合器单元录制应用程序播放的声音 或者播放声音就足够了ObjectAL https github
  • 如何捕获 UITextField 文本的变化?

    我查看了所有类似的问题 它们与我所问的不同 我需要捕捉 UITextField 中实际文本的变化 而不仅仅是编辑状态 当视图加载时 它将成为第一响应者 我需要知道何时输入文本 以便我可以在导航栏中启用 下一步 如果可以的话请帮助我 这确实阻
  • 在 collectionView 单元格上添加边框

    每次用户单击特定单元格时 该单元格都会有边框 问题是当我来回滚动时 边框会选择随机单元格来设置边框 func collectionView collectionView UICollectionView didSelectItemAt in
  • 无法找到任何至少支持 iOS 8.0 的 Xcode 安装

    我已经有一段时间没有使用 Appecelerator Titanium 的开发工具了 Studio 和 CLI 现在我尝试在 iOS 模拟器中运行现有的应用程序 从工作室我无法选择 iOS 模拟器 当我使用 CLI 并执行 appc run
  • 使用 UIAppearance API 自定义 UIBarButtonSystemItem 的色调颜色

    我知道我可以定制UIBarButtonItem文本通过 setTitleTextAttributes forState 还有一种方法可以自定义UITabBar图标通过 setSelectedImageTintColor 有没有办法自定义色调
  • BLE:使用 Android / iOS 读取长特征值

    对于正常的特征读取 仅读取 MTU 大小 20 字节 的数据 我的客户将提供更大尺寸 超过 100 字节 的特征 我看到 BLE 提供了 长读取 功能 可以读取直到达到特征的大小 https bluegiga zendesk com ent
  • 如何在WebView中隐藏滚动条?

    我切换到WKWebView因为UIWeb视图Apple 不再建议使用 使用以下代码从 WebView 中的容器加载 HTML 文件 let webview myWKWebViewClass webview for Bundle main f
  • 在 iOS 8 中呈现相机权限对话框

    当我的应用程序在 iOS 8 上第一次尝试访问摄像头时 会向用户显示一个摄像头权限对话框 很像 iOS 7 中用于访问麦克风的麦克风对话框 在 iOS 7 中 可以预先调用麦克风权限对话框并查看是否授予了权限 请参阅这个问题 https s
  • 在 CAKeyFrameAnimation 期间检测碰撞

    当一个 UIImageView 在 CAKeyFrameAnimation 期间沿一条路径行进时 是否可以检测到两个 UIImageView 的碰撞 如果是这样 这是如何完成的 我尝试了多种方法 包括在动画期间检查 CGRect 是否发生碰

随机推荐

  • 在 IE 中 XML 未通过响应对象正确发送到客户端

    我有一个上传控件 它从客户端调用处理程序 并将 xml 字符串发送回客户端 下面的代码在 Chrome 中工作正常 但在 IE 中将奇怪的 xml 发送回客户端 处理程序代码 public void ProcessRequest HttpC
  • 使用类似字典的结构访问 Pandas 数据框中的嵌套元素

    我有一个数据框如下 In 19 data frame Out 19 id hero 0 55c97138e5fecec26959f3b0 u info u id u 0001 u name u superman 为了过滤掉条目的名称字段 我
  • 分发 .pyc 文件有哪些限制?

    我已经开始使用 Python 开发商业应用程序 并且正在权衡如何分发该应用程序的选择 除了显而易见的 使用适当的商业许可证分发源代码 之外 我正在考虑仅分发 pyc文件没有对应的 py来源 但我对 Python 的兼容性保证还不够熟悉 不知
  • 如何设置事件的EventTarget

    如何设置事件目标 https developer mozilla org en docs Web API EventTarget一个事件的 var myObj foo bar var event new Event eventName ev
  • PEG规则识别函数原型

    我正在尝试创建一个可以解析 C 代码的解析器 我的用例是解析可能包含函数原型的缓冲区 我想将此函数名称推入符号表中 我是 Spirit 和 PEG 的新手 我正在尝试弄清楚如何编写可以识别函数原型的规则 这是我当前的实现 auto name
  • CancellationToken.ThrowIfCancellationRequested 之后出现故障与取消的任务状态

    通常我不会发布带有答案的问题 但这次我想引起一些注意 我认为这可能是一个晦涩但常见的问题 它是由这个问题 https stackoverflow com q 24346706 1768303 从那时起我回顾了自己的旧代码 发现其中一些也受到
  • UITextview打字属性不起作用

    我有 UITextView 我想将其行高设置为 50 0f 所以我使用打字属性 但没有任何效果 我的代码在 ViewDidAppear 方法中像这样 UITextView textView UITextView alloc initWith
  • java中RGB转灰度、bmp图像

    我的老师给我们布置了一个任务 要制作一个采用 640x480 bmp 彩色图像的课程 将其转换为灰度图像 我找到了一些有想法的资源 所以我做到了 但是有一个问题 因为它似乎使它不会给我错误 但输出没有出现 我认为这是我的代码 我的代码是 i
  • IntelliJ IDEA:ClassNotFoundException 如果运行调试,执行/运行确实有效

    我在 Eclipse 中启动了一个 Java Maven 项目 处理了几天 然后将其导入到 IntelliJ IDEA 中 再次处理了几天 IDEA 和 shell 中的正常运行 执行确实有效 但调试无效 当我单击调试的 Bug 图标时 它
  • Java 的反射器?

    Java 有没有相当于 NET反射器 http www red gate com products reflector 编辑 更具体地说 反编译是我所追求的 See 如何反编译Java类文件 https stackoverflow com
  • 有人将 Node.js 与 Amazon SNS 和 Apple 推送通知一起使用吗?

    我正在寻找将 node js 与 Amazon SNS 和 Apple APN 推送通知结合使用的示例 我们使用 Amazon 进行托管 我以前也使用过 SNS 这非常简单 但他们提供的推送通知示例是针对 java 的 没有针对 Node
  • Cython:(为什么/何时)使用 Py_ssize_t 进行索引是否更好?

    这是后续这个问题 https stackoverflow com questions 20978938 cython should i use np float t rather than double for typed memory v
  • 更改 UpdatePanel 外部 TextBox 中的文本

    我在 UpdatePanel 中有一个 gridview gridview 显示在弹出窗口中 单击该网格中的选择按钮后 我尝试在页面中设置文本框文本 但它不起作用 如果我删除更新面板那么它就会工作 这是我在 aspx 中的代码 div di
  • Spring security:注销后重定向到上一个网址

    我有一个使用 spring security 的网络应用程序 我想在用户注销时将用户重定向回他们注销之前所在的同一页面 是否有捷径可寻 不确定这个问题指的是哪个 Spring 版本 但有一个useReferer标准属性org springf
  • XmlWriter 编码问题

    我有以下代码 MemoryStream ms new MemoryStream XmlWriter w XmlWriter Create ms w WriteStartDocument true w WriteStartElement da
  • 如何捕获 Room 持久性库中未处理的异常

    背景 我在 Android Java 项目中使用 Room 持久性库来支持本地数据缓存 查询或保存数据时 Room 在专用线程上运行 Problem 如果 Room 管理的这些线程之一引发异常 则整个应用程序将崩溃 如果数据不一致 例如数据
  • 在 text2vec R 包中准备词嵌入

    基于text2vec包的小插图 提供了一个创建词嵌入的示例 对wiki数据进行标记 然后创建术语共现矩阵 TCM 该矩阵用于使用包中提供的glove函数创建词嵌入 我想为包中提供的电影评论数据构建词嵌入 我的问题是 我是否需要将所有电影评论
  • 递归 JSONB postgres

    我正在尝试在 Postgres 中构建一个支持数组和对象的递归 CTE 以返回键值对列表 但似乎无法找到一个好的示例 这是我当前的代码 with recursive jsonRecurse as select j key as Path j
  • 从组合框填充文本框

    我在 Microsoft Access 中创建了一个表单 并添加了一个从数据库表填充的组合框 我还有一个文本框 当组合框更改时 我想从查询中填充该文本框 我的查询如下 SELECT C Nome FROM Categories AS C I
  • 在容器视图中均匀分布多个视图

    自动布局让我的生活变得困难 理论上 当我切换时它会非常有用 但我似乎一直在与之抗争 我制作了一个演示项目来尝试寻求帮助 有谁知道如何在调整视图大小时使视图之间的空间均匀增加或减少 以下是三个标签 手动垂直均匀间隔 我想要的是让他们在旋转时均