动态检测 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动态高度约束