让 2 个不同的 UIView 确定 UIScrollView 的 contentView 的高度
Posted
技术标签:
【中文标题】让 2 个不同的 UIView 确定 UIScrollView 的 contentView 的高度【英文标题】:Have 2 different UIViews determine the height of the contentView of a UIScrollView 【发布时间】:2017-04-21 11:51:50 【问题描述】:是否可以将 2 个不同的 UIView
s 连接到 UIScrollView
的底部 ContentView
并通过单击按钮切换它们?
我现在拥有的视图层次结构 -
UIScrollView
ContentView
UIView1
UIView2
我真正希望实现的是将UIView1
和UIView2
都连接到 ContentView 的底部,并以编程方式在这两种情况之间切换。
我尝试将 2 个约束之一设为可选,然后根据我的情况切换优先级,但它说我无法将已加载视图的优先级从可选更改为必需(反之亦然)。
【问题讨论】:
是的,你可以。首先,你不能在约束的帮助下改变滚动contentSize
。约束基本上旨在计算任何视图的框架,而不是内容大小。您必须提供滚动视图的内容大小。系统不会自动计算。根据您的 2 个视图调整 scrollView
的内容大小。您可以更改滚动视图contentOffset
使用或不使用动画以从一个偏移量滚动到另一个偏移量。
这里有些混乱... 第一,绝对可以使用约束来控制滚动视图的 contentSize。第二,你问的不是很清楚:你想在显示一个视图和隐藏另一个视图之间切换吗?或者你想交换他们的位置?
@DonMag 我希望在 2 个不同 UIView 的高度之间切换 UIScrollView 的 contentSize
好的,那么是的,你走在了正确的轨道上。将UIView1
和UIView2
都连接到ContentView
的底部,并为约束创建@IBOutlets。正如@Saurav 在他的回答中所说,给然后优先级除了 1000。因此,如果您想从 View1 控制大小开始,那么(例如)将 V1 设置为 999 并将 V2 设置为 998。当需要,只需交换值 - 将 V1 设置为 998,将 V2 设置为 999。
【参考方案1】:
您不能将已加载视图的优先级从可选更改为必需。但是您绝对可以在相同范围内增加优先级。示例-priority1 = 750 ,priority2 = 760
【讨论】:
以上是关于让 2 个不同的 UIView 确定 UIScrollView 的 contentView 的高度的主要内容,如果未能解决你的问题,请参考以下文章