UI滚动视图不会按预期滚动

时间:2015-12-04 01:18:07

标签: ios swift uiscrollview scrollview

使用故事板和自动布局我将滚动视图拖动到视图控制器中并适当地满足自动布局约束。我添加了一个以屏幕为中心的标签,并带有相应的自动布局约束。

在viewDidLoad,viewWillAppear和viewDidLayoutSubviews中实现以下代码(当然,在不同的运行时间)

scrollView.contentSize.height = 1000

在模拟器中运行时,视图仅水平滚动而不是垂直滚动。在看到它水平滚动而没有应用特定条件时,它一开始没有意义,直到我仔细研究了约束。

当最初在UIScrollView中拖动并选择Pin选项来添加约束时,它会显示前导和尾随空格的默认值为-20而不是0.这似乎可以解释自动水平滚动但仍无法解释原因我无法实现垂直滚动。

我也尝试使用CGSize指定内容大小:

scrollView.contentSize = CGSize(400, 1000)

scrollView.contentSize = CGSize(view.frame.width, 1000)

似乎都不起作用。我还使用初始化器CGSizeMake(宽度,高度)使用相同的参数实现了上述方法,但也不起作用。

选择滚动视图时,按照默认情况下的滚动选项被启用为其他选项。

1 个答案:

答案 0 :(得分:2)

您可以将约束设置为在容器视图中水平和垂直居中。这会产生错误的不幸效果"滚动视图的内容大小不明确。"如果您知道某个事实,您将在代码中设置内容大小,则可以忽略它。

但是可能更好的做法是将空UIView称为containerView,将其顶部/底部/左/右固定到滚动视图中心,如上所示。为containerView的高度设置约束。然后为containerView的高度约束创建一个IBOutlet,将其称为containerViewHeightConstraint。然后在代码中说:

self.containerViewHeightConstraint.constant = 1000 //or whatever height you want for scrolling