iOS 8 - UIScrollView无法滚动

时间:2015-08-01 05:28:36

标签: ios xcode uiscrollview autolayout scrollview

我想进行垂直滚动取决于内容视图中的内容。我创建了以下层次结构:查看 - > 滚动视图 - > 内容视图

  • 我将(上方,下方,左侧,右侧)滚动查看固定到主视图
  • 我还将内容视图固定到滚动视图
  • 然后我在内容视图主视图之间添加相同宽度相同高度约束,以便< strong>滚动视图可以计算内容大小

完成所有这些操作后,滚动视图根本不会滚动(只会缩小内容)。仅当我将 scrollView.contentSize.height 添加到 viewWillLayoutSubviews()时,它才会滚动。但是我不想硬编码这个高度值。我认为 Autolayout 应该自动计算内容高度并添加适当的滚动。有谁知道解决这个问题的正确方法?

4 个答案:

答案 0 :(得分:2)

我有同样的问题。我通过删除滚动视图的约束来修复它,然后将滚动视图的框架设置为等于viewDidAppear中视图的框架:

self.scrollView.frame = self.view.frame;

当您将故事板中的滚动视图的宽度和高度设置为等于视图时,会出现此问题,以便您可以查看完整内容。它非常适合编辑,但是当您运行应用时,视图的帧大小因iPhone或iPad而异,但滚动视图的帧大小不会改变。它仍然与您在故事板中设置的大小相同。

这就是为什么滚动视图仅在您将内容大小硬编码为随机大值时才有效。该值必须大于当前滚动视图的帧大小才能使其工作。将滚动视图的帧设置为等于视图的帧后,内容大小设置将正常工作:

self.scrollView.contentSize = self.contentView.frame.size;

答案 1 :(得分:1)

  

•然后我在内容之间添加了相同宽度和相同高度限制   视图和主视图以滚动视图可以计算它   内容大小

删除此部分。将子视图放在scrollView中并向其添加顶部,底部,前导和尾随约束应该就足够了。

当您创建相等高度约束(和相等宽度)时,您阻止内容调整其内在大小,自动布局使用该大小来计算scrollView.contentSize

如果您希望scrollView仅垂直滚动,则可以保持相等的宽度约束。

答案 2 :(得分:0)

内容视图的框架应大于scrollview,然后设置contentSize以确保滚动范围。

答案 3 :(得分:0)

为什么在scrollView中需要内容视图?听起来您的内容视图重新调整了内容的大小,而滚动视图的内容大小正在设置为您的内容视图,而不会动态更改。尝试在滚动视图中布置您的内容,以便您的滚动视图内容大小实际上会根据内部的内容而改变。确保更新scrollView.contentSize!