UIStackView 表单布局
Posted
技术标签:
【中文标题】UIStackView 表单布局【英文标题】:UIStackView Form Layout 【发布时间】:2015-10-07 16:10:40 【问题描述】:我正在创建一个包含各种字段的基本表单。我想使用UIStackView
来布局所有控件。我将如何执行以下操作以使控件正确对齐? UIStackView
是正确的方法吗?
【问题讨论】:
【参考方案1】:Apple suggests 为每个标签和字段创建水平堆栈视图,然后将它们放在垂直堆栈视图中。
这是有道理的,因为如果您稍后将其中一个控件更改为不同的控件(例如弹出按钮),您可以保持标签和控件基线对齐。
【讨论】:
【参考方案2】:您绝对可以使用 StackViews 来实现这一点。
如何排列 StackView 取决于您希望如何管理对齐方式。
以下是我的建议:
-
将您的标签放在一个垂直对齐的堆栈视图中,然后
将您的文本字段放在另一个垂直对齐的堆栈视图中
将两个堆栈视图放在一个水平对齐的堆栈视图中
您可能希望将distribution
设置为在两个较小的stackview 上平均填充,然后将spacing
设置为对于每个较小的stackview 都相同。
最后,您将能够在水平堆栈视图上设置间距,以设置文本和文本字段之间的间距。(最后一部分是我将它们设置成这样的原因。)
【讨论】:
我认为这完全符合我的问题的要求。如果布局有点复杂怎么办?假设有一条视觉线将两行分开。然后呢? 然后我将有两个包含您的文本和文本字段的水平堆栈视图,以及一个包含所有元素(堆栈视图、分隔符、堆栈视图)的垂直堆栈视图。您仍然可以达到相同的效果,只是稍微不那么优雅。另外,如果它满足您的问题,您介意接受答案吗?干杯! 完成。当这样拆分时,如何控制左侧空间以使文本字段正确排列? 对所有文本字段设置相同的宽度限制。 @RobNorback 如何处理键盘向上事件。如果有提交按钮,我希望它始终位于键盘上方。以上是关于UIStackView 表单布局的主要内容,如果未能解决你的问题,请参考以下文章
UIStackView 嵌入在 UIStackView 对齐中
使用 UINavigationController 时 UIStackView 无法设置底部约束
使用 UIStackView 时,UIImageView 在 UITableViewCell 内被挤压