在 iOS 中使用自动布局填充 UIScrollView 的内容
Posted
技术标签:
【中文标题】在 iOS 中使用自动布局填充 UIScrollView 的内容【英文标题】:Fill UIScrollView with its content using autolayout in iOS 【发布时间】:2015-06-24 10:36:16 【问题描述】:我正在制作一个基于表单的 UIScrollView,其中将包含一些标签和文本字段。
我的 ScrollView 高度会随着 ios 设备的高度而增加。
PS:我不想为 Scrollview 的每个元素添加约束,因为在我的例子中可能有 100 个表单字段。
我想要的是,像这样完全占据我的滚动视图的内部内容:
到目前为止,没有特殊的约束,按钮用底部边缘标记,滚动视图从顶部边缘固定。此外,滚动视图和按钮之间的垂直间距也被定义。
这是自动布局约束截图。
【问题讨论】:
【参考方案1】:如果标签的数量是可变的,我建议在代码中而不是在 Interface Builder 中进行。
在代码中,您可以使用循环将每个标签设置为与其上方的标签具有相同的宽度/高度。您可能希望将它们的高度设置为 >= 最小值。确保将第一个标签固定在顶部,最后一个标签固定在底部。
但这可能很麻烦,为什么不直接使用UITableView
?您可以修改行高以让单元格完全占据视图。
- tableView:heightForRowAtIndexPath:
- tableView:estimatedHeightForRowAtIndexPath:
【讨论】:
标签的数量不是可变的。我只是在寻找类似于滚动视图上的自动调整大小的解决方案,您在其中删除了滚动视图内元素的所有自动调整大小约束,并且它们被平均拖动在滚动视图中,当它的高度增加时。【参考方案2】:我刚刚遇到同样的问题,并且已经写了一个 pod called TLFormView 来做到这一点:一个基于 UIScrollView
的表单。
它还有一些不错的功能,例如:
带有TLFormModel 的声明性形式分类法只需扩展它,添加您想要的属性就可以了。没有delegate
,没有事件处理,没有样板。
处理 iPhone 和 iPad 不同布局的好方法
具有NSPredicate
的条件可见性可以访问其他字段中的所有值(例如:当字段 B 具有特定值时显示字段 A)
就地帮助弹出框
所有字段都是 TLFormFields 扩展 UIView
,因此您可以放置您需要的任何内容。
您可以直接在命令行中使用pod try TLFormView
进行尝试。
如果你想了解更多,我写了一些关于它的博客文章here。
请在此处或在博客文章中发表评论,让我知道您对此的看法。此外,任何贡献都非常欢迎GitHub repo
【讨论】:
以上是关于在 iOS 中使用自动布局填充 UIScrollView 的内容的主要内容,如果未能解决你的问题,请参考以下文章