如何将 UIScrollView 添加到基于 xib 的视图中

Posted

技术标签:

【中文标题】如何将 UIScrollView 添加到基于 xib 的视图中【英文标题】:How to add a UIScrollView to a xib based view 【发布时间】:2020-03-16 08:29:23 【问题描述】:

我正在尝试创建一个基于 xib 的 UIView

我想添加一个UIScrollView,然后将我的内容嵌入其中,以便在不适合时滚动,反之亦然。

我创建了 xib 并添加了一个滚动视图,顶部、左侧、底部和右侧的锚点为 0。

我收到一个错误,但是高度和宽度不明确。

从历史上看,我总是在代码中构建这些视图,使用像

这样简单的东西
...
      scrollView.topAnchor.constraint(equalTo: safeAreaLayoutGuide.topAnchor),
      scrollView.leadingAnchor.constraint(equalTo: safeAreaLayoutGuide.leadingAnchor),
      scrollView.bottomAnchor.constraint(equalTo: safeAreaLayoutGuide.bottomAnchor),
      scrollView.trailingAnchor.constraint(equalTo: safeAreaLayoutGuide.trailingAnchor),
...
      profilePictureImageView.heightAnchor.constraint(equalToConstant: 170),
      profilePictureImageView.widthAnchor.constraint(equalToConstant: 170),

      collectionView.widthAnchor.constraint(equalTo: scrollView.widthAnchor),
      collectionView.topAnchor.constraint(equalTo: profilePictureImageView.bottomAnchor, constant: 6),
      collectionView.leadingAnchor.constraint(equalTo: scrollView.leadingAnchor),
      collectionView.bottomAnchor.constraint(equalTo: scrollView.bottomAnchor, constant: -32),
      collectionView.trailingAnchor.constraint(equalTo: scrollView.trailingAnchor),

如何在 xib 中创建全屏滚动视图?

我看到一堆答案建议随机高度为 1000,但这似乎很奇怪,特别是因为它不需要在代码中使用这种方法。

我希望它是全宽和里面所有内容的高度。

我确实尝试将 xib 设为 UIScrollView,但我的所有内容都被压缩到了左侧。

【问题讨论】:

【参考方案1】:

尝试在 UIView 中嵌入滚动视图(具有相同的约束),或者您可以使用嵌入在滚动视图中的 StackView

Here 很好的解释。

【讨论】:

【参考方案2】:

解决问题的一种方法是禁用内容布局指南

另见:Scrollable content size ambiguity

【讨论】:

以上是关于如何将 UIScrollView 添加到基于 xib 的视图中的主要内容,如果未能解决你的问题,请参考以下文章

如何将 UILabel 添加到 UIScrollView?

如何将多个视图添加到 UIScrollView

如何将多个 UIImageViews 添加到分页 UIScrollView?

如何按顺序将子视图添加到 UIScrollView

如何从同一方法外部将按钮添加到 UIScrollView 作为子视图?

如何将项目添加到 UIWebView 的 UIScrollView