约束文本字段,使它们之间有均匀的空间并填满整个屏幕

Posted

技术标签:

【中文标题】约束文本字段,使它们之间有均匀的空间并填满整个屏幕【英文标题】:Constrain text fields so that they have even space between them and fill the whole screen 【发布时间】:2015-08-20 07:37:10 【问题描述】:

我正在构建一个应该能够在几乎任何运行 ios8+ 的 iOS 设备上运行的应用程序。问题是这意味着我必须支持许多不同的屏幕尺寸。这对UITableViews 来说很容易,但我很难让它在我的注册视图中工作。这是它现在的样子:

相当基本的东西;我基本上只有一个受限于顶部布局指南的“添加照片”按钮,它下方的一堆文本字段,以及一个受限于底部布局指南的“注册”按钮。我想要做的是让所有文本字段从“添加照片按钮”到“注册”按钮均匀分布,以最大限度地利用屏幕空间。如:我希望所有文本字段水平居中,并且它们之间有均匀的空间。

困难的部分是空间是未指定的,因为它会根据设备的大小而有所不同。

有没有办法做到这一点?某种规则告诉文本字段在其顶部和底部邻居之间保持均匀的空间?我现在能做的最好的事情是将所有文本字段限制在固定距离的“添加照片”按钮上,并将“注册”按钮限制在底部,这样对于更大的屏幕,我将拥有大部分内容聚集在顶部,“注册”按钮在底部,对于最小的屏幕(iPhone 4/4S),内容看起来是均匀分布的(应该是这样),因为按下了“注册”按钮向上并且顶部的整个对象簇被向下推。显然这不是一个非常理想的解决方案。

我更喜欢通过故事板进行设置,但必须在代码中进行设置。

【问题讨论】:

【参考方案1】:

创建这些空间的方法是在文本字段之间添加透明视图。这些透明视图将对文本字段和您的 UIImageView 和 SignUp 按钮具有约束 0(顶部和底部)。当您创建所有这些透明视图并位于您的文本字段之间时,您需要选择所有这些(透明视图)并添加约束“等高”。现在所有元素之间的空间在所有屏幕上都将相同。

您可以在https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/AutolayoutPG/AutoLayoutbyExample/AutoLayoutbyExample.html#//apple_ref/doc/uid/TP40010853-CH5-SW8找到更多信息

【讨论】:

有趣...似乎是一种非标准方法...但它对我有用!谢谢! 这是 Apple 针对您的问题的解决方案。他们当然应该做得更干净。 是的,我阅读了那个链接。就是这样,不过,您会认为 Apple 会实施一种更清洁的方式来做到这一点。不过我没有抱怨:)

以上是关于约束文本字段,使它们之间有均匀的空间并填满整个屏幕的主要内容,如果未能解决你的问题,请参考以下文章

如何使 UITextView 填满剩余空间

Android EditText,让它填满整个屏幕并在其中任意位置书写

使用自动布局在屏幕上水平均匀分布按钮。它们之间的间距不相等

UITableView 不会在 iPad 上填满整个屏幕

如何动态调整单个 UIStackView 的行高以填满整个屏幕?

使用 Swift 使 SKScene 填满整个屏幕