【问题标题】:UIScrollView ContentView dynamic height constraintsUIScrollView ContentView 动态高度约束
【发布时间】:2018-06-06 06:29:24
【问题描述】:

我遇到了 contentView 高度限制的问题。所有标签都有动态高度,即没有固定高度。我在某处读过将高度设置为滚动视图高度。

当前ViewController的高度是870px,scrollview高度是757px。我不知道如何在 AutoLayout 中设置高度,因为在某个点之后我无法滚动。

我先设置了 UIScrollView,然后我添加 UIView 作为 UIScrollView 的子项,然后我添加了 2 个 UIImageView 和几个 UILabel,UILabel 的大小取决于内容,内容不固定。由于 UIView 的高度是静态的,所以当 UILabel 的内容很大时,到了某个点我就无法滚动了。

根据@Wonder Dog 的回答,我做了一些更改,现在我遇到了滚动视图模糊高度问题

【问题讨论】:

  • 你想设置什么高度?
  • 我有点困惑,我只想将高度设置为等于主视图
  • 如果我不设置内容视图的高度,它会显示警告并且滚动视图不起作用。
  • 您可能需要设置约束。另外请将滚动视图的背景更改为红色(用于调试)并上传该图片,以便我们可以看到它的边界
  • 您是否缺少最后一个标签/视图与滚动视图之间的底部约束?如果尚未添加,请添加它。

标签: uiscrollview autolayout


【解决方案1】:

这样做:

  1. 将滚动视图添加到您的视图控制器,不要对其设置任何约束。
  2. 开始在滚动视图中添加子视图(图像、标签等)并设置所需的约束。对于标签,您不需要设置高度,因为它们会根据内容自动调整高度。对于其他子视图,还要设置高度或稍后将确定高度(即纵横比)的其他约束。如果滚动视图对于要添加的所有子视图都太小,请从其底部拖动以增加其高度。将所有子视图保留在滚动视图中并将它们链接在一起非常重要。
  3. 对于滚动视图中的最后一个标签,为滚动视图添加底部约束。
  4. 将滚动视图中的边距约束添加到主视图(顶部、前导、底部和尾部)。

由于所有子视图都链接并固定在滚动视图内的顶部和底部,并且滚动视图固定到情节提要的视图,这将起作用。

不要设置滚动视图的高度。将其设置为 757 像素是错误的,因为它会在高度低于 757 像素的设备上将滚动视图呈现在屏幕下方。

【讨论】:

  • 获取滚动视图的可滚动内容高度不明确
  • 这意味着对于需要高度约束(除了标签之外的大部分内容)的子视图或滚动视图中至少一个子视图的顶部/底部约束,您缺少高度约束。
  • 我在添加约束时犯了一些错误。
  • 没错。请注意,与流行的看法相反,这可以完美地工作,而无需在滚动视图中添加额外的 UIView 来充当某种“内容视图”(正如这里的其他几个答案所暗示的那样)。
  • 感谢我 26 岁的自己写下这个答案,来自 28 岁的自己。
【解决方案2】:

如果您的意思是希望滚动视图与容器视图具有相同的高度/宽度:

  1. 转到情节提要并找到视图
  2. 按“ctrl”并从滚动视图拖动到父容器的边缘之一
  3. 对所有 4 个边缘(滚动视图的上、左、下、右边缘)执行相同的步骤
  4. 您可能需要将约束设置为“0”(来自父级的边距像素数)

尝试按照这张图片(确保所有的行都是粗体(打开)并将文本框中的值设置为“0”:

【讨论】:

  • 我的问题是,例如,所有标签都可以说每个 20 行。我无法滚动超出特定点。
猜你喜欢
  • 1970-01-01
  • 2019-05-07
  • 2023-03-17
  • 2017-10-14
  • 1970-01-01
  • 2017-08-18
  • 1970-01-01
  • 2020-06-05
  • 2019-02-18
相关资源
最近更新 更多