【发布时间】:2021-04-12 10:43:44
【问题描述】:
我不时遇到这个问题,但仍然没有提出令人满意的解决方案。我正在尝试创建一个复杂的可滚动视图。考虑以下示例:
[UIView 1]
[UIView 2]
[UIView 3]
[UICollectionView]
[UIView 4]
在这种情况下,四个 UIView 中的任何一个都可以隐藏或可见。 UICollectionView 不应滚动,而应显示所有单元格。所有这五个视图都应该在滚动所有视图的 UIScrollView 中。
我还没有找到使这项工作奏效的秘诀。
选项 1] 在代码中完全手动布局。我知道这会起作用,但它非常不方便,因为它会影响子视图,这些子视图本身就很复杂。
选项 2] 五个视图中的每一个都位于 UICollectionView 单元格中,并且 UICollectionView 处理大小调整和滚动。我同样知道这会奏效,但完成此操作似乎需要很多开销。
选项 3] 将五个视图包装在一个 UIStackView 中。这似乎是这个问题最自然的解决方案,但它依赖于能够同时做三件我还没有完成的事情:
-
根据[可见]五个视图的高度设置堆栈视图的高度。我试图通过从界面生成器链接到代码中的高度约束来实现这一点。
-
将集合视图设置为根据其包含的单元格数量具有可变高度。
-
将 UIScrollView 内容设置为与堆栈视图相同的高度。
到目前为止,我还没有找到正确的约束集来使所有这些事情发生,这让我开始认为带有 UIStackView 的 UIScrollView 不是解决此问题的可行解决方案。我尝试了一切,要么破坏了集合视图显示所有单元格的能力,要么我无法访问滚动视图中的整个堆栈视图(IE,它在底部之前被切断)。
对解决此类问题的正确策略的想法? (提前致谢)
【问题讨论】:
标签: ios swift uiscrollview uistackview