'present modally' 视图控制器中的滚动视图不工作

Scrollview in 'present modally' view controller not working

我有一个将以模态方式呈现的视图控制器,并且在其中 VC 我有一个滚动视图。但是,当我的 segue 类型为 'present modally' 时,添加滚动视图通常似乎不起作用。我在某处读到我必须将我的滚动视图放在另一个视图中才能工作。所以这是我的视图层次结构:

这些是我对视图 A 的约束:

ScrollView 约束:

ViewB 约束:

在 ViewB 中,我有另一个视图,我为其父视图提供了 0 的顶部、左侧和右侧约束。我也在代码中设置了这个:

 override func viewDidLayoutSubviews()
{
    viewB.frame.size.height = 2000
    scrollView.contentSize = viewB.frame.size
}

但是,滚动视图仍然没有滚动。感谢任何可以提供帮助的人...已经坚持了一段时间。

问题是您已将 ViewB 约束限制在其包含的滚动视图中。如果您要采用这种方法(我更喜欢),这很好;但这意味着滚动视图的 contentSize 是由 ViewB 的大小决定的,而不是由 contentSize 属性 决定的。因此,您的 viewDidLayoutSubviews 代码毫无用处,您的第一步应该是将其丢弃。

那么,ViewB 的大小是多少?不幸的是,它与滚动视图的大小相同,因为您给了 ViewB 宽度和高度约束,使其与滚动视图的大小相同。因此没有什么可滚动的。

解决方案是通过约束来完成您在代码中尝试做的事情,即给 ViewB 一个固定为 2000 的高度约束,而不是您给它的高度约束。