动态检测 UIScrollView 的高度

Posted

技术标签:

【中文标题】动态检测 UIScrollView 的高度【英文标题】:Detect a UIScrollView's height dynamically 【发布时间】:2016-01-19 07:19:56 【问题描述】:

我在检测 UIScrollView 高度时遇到了真正的问题。我搜索了很多,找到了这个解决方案:

所以我从Content View 拖到View 并制作了Equal Height。但我不为我工作。

我也尝试根据其中的元素高度计算scrollView高度,但我认为这不是正确的方法。

如何动态设置 UIScrollView 高度?正确的做法是什么?

【问题讨论】:

你想在滚动视图中添加什么?你想在里面显示一些文本吗? @BharathVankireddy 有很多 UITables、UIViews、UILabels 等。 您是否考虑过将所有元素直接放置在滚动视图中?是否有充分的理由拥有内容视图? 【参考方案1】:

你的ScrollView 应该像这样添加一个ContentView

选择您的scrollView 并在尺寸检查器底部,设置宽度如下:

有关如何在 Interface Builder 中处理 scrollView 的更多详细信息,您可以查看此 AppleDoc Working with Scroll Views

希望对您有所帮助!

【讨论】:

它会自动改变高度吗?我做到了,但没有任何反应【参考方案2】:

设置scrollView 高度的唯一方法是计算添加到滚动视图的单个对象的高度。

以编程方式计算每个 UI 对象的高度,最后将内容高度设置为滚动视图。

[scView setContentSize:CGSizeMake(300, height)];

在上面一行中,'height' 只不过是计算的所有 UI 对象的所有高度的总和。

【讨论】:

【参考方案3】:

通过执行以下操作,我能够根据里面的内容实现具有自动高度的 UIScrollView。

    将滚动视图添加到主视图。 在此容器滚动视图中添加一个 ContentView。 在此内容中给予适当的约束 查看容器滚动视图及其内部 UI 组件。请注意,你不应该给固定高度 内容视图。内容视图的约束应该增加 根据里面的UI Components 这可能会给你一个布局 警告为“明确......”。要解决此问题,请在内容视图和滚动视图之间提供“等高”约束关系

尝试上述步骤,这将解决您的问题:)

【讨论】:

【参考方案4】:

您想通过自动布局在您的 UIScrollView 中添加项目(UIView、UILabel...)吗?如果是这样,只需将它们放入其中并为它们创建正确的约束。

关键是 UIScrollView 中的每个项目对其 superview 都有顶部、前导、底部和尾侧约束。最重要的是确保您的 UIScrollView 对其子项具有顶部、前导、底部和尾部的后代约束。它将为您计算正确的滚动视图内容高度。

在您的解决方案中,如果您的 contentView 的帧为零,它不会为您提供滚动视图的任何高度。

【讨论】:

以上是关于动态检测 UIScrollView 的高度的主要内容,如果未能解决你的问题,请参考以下文章

UIScrollView ContentView动态高度约束

Swift如何获得UIScrollView动态高度

动态 UITableView 高度与 UIScrollView 中的动态 UITableViewCells

UIScrollView 中宽度和高度相等的动态按钮

将动态高度设置为 UIScrollView Swift

如何使用 autoLayouts 动态增加 UIScrollView 的高度