【问题标题】:Fill UIScrollView with its content using autolayout in iOS在 iOS 中使用自动布局填充 UIScrollView 的内容
【发布时间】:2023-03-24 20:01:01
【问题描述】:

我正在制作一个基于表单的 UIScrollView,其中将包含一些标签和文本字段。

我的 ScrollView 高度会随着 iOS 设备的高度而增加。

PS:我不想为 Scrollview 的每个元素添加约束,因为在我的例子中可能有 100 个表单字段。

我想要的是,像这样完全占据我的滚动视图的内部内容:

到目前为止,没有特殊的约束,按钮用底部边缘标记,滚动视图从顶部边缘固定。此外,滚动视图和按钮之间的垂直间距也被定义。

这是自动布局约束截图。

【问题讨论】:

    标签: ios uiscrollview autolayout


    【解决方案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

    【讨论】:

      猜你喜欢
      • 2012-09-27
      • 1970-01-01
      • 1970-01-01
      • 2013-03-28
      • 2012-12-19
      • 2015-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多