2016-12-04 54 views
0

我是一个非常漂亮的iOS开发人员,并且遇到了我第一次需要滚动视图。我需要设计的页面有点复杂。由于我正在努力使它正确布局,我决定创建一个超级简单的场景,以便我可以确保我了解如何让UIScrollViews工作。显然它并没有帮助,因为事情不能正常工作,并且我在遵循几个教程后被卡住了。iOS UIScrollView,我误解了什么?我无法滚动滚动视图

我在Xcode 8.1和斯威夫特3.

截图工作在这篇文章的末尾。

我有一个由scrollview和一个子视图组成的场景,其中有两个标签。我已经将标签设置为〜700pt以尝试进行滚动。没有什么滚动,你只能看到第一个标签。此外,子视图不会展开为全高。

您可以在屏幕截图中看到我的滚动视图有约束将其固定到超级视图的两侧。

子视图也是一样的。

标签约束将它们放置在子视图内,并且彼此间隔700pt。我认为这会让视图达到滚动所需的高度。没有约束错误。

我希望红色的childview填充垂直空间,然后滚动。在这一点上,只要有东西在滚动,我就会采取任何布局。没有什么是,我没有得到什么?

截图:
(由于移除链接限制,因为我仍然是一个新的SO用户)


EDIT(16年6月12日):

我已经做了一些改动并接近一点。主要是,我建议在其他地方将其中一个标签设置为与滚动视图等高。这现在给我“反弹”的效果,这意味着东西是滚动的东西;然而,我们仍然只处理一个内容屏幕,因为隐藏在下面的第二个标签被剪掉。

这就是事情立场:
edited hierarchy
edited screenshot

+0

需要设置滚动视图的内容的大小。如果你没有明确地设置它,那么它将计算它的内容的大小,这是子视图的大小。由于您已将子视图约束为滚动视图,因此子视图的大小与滚动视图的大小相同。尝试在子视图和滚动视图之间设置约束,以便子视图大于滚动视图(例如,编辑“子视图前导==滚动视图前导”并将常量设置为-300) – Paulw11

+0

@ Paulw11我认为具有标签意味着内容大小?此外,我还对内容视图以及顶部/底部/顶部/尾部设置了高度= 90的限制。否则,它会抛出一个错误。所以它确实有一个明确的高度。 – Philip

+0

它会尝试并推断出内容大小,但由于您已将视图限制在滚动视图中,即它将以最终的内容大小为前提,假设您需要基于水平间距的可见屏幕外的按钮。看看如果将按钮的前沿约束到视图的前沿和另一个按钮的后沿并保持间距,会发生什么情况。您应该以冲突结束 – Paulw11

回答

0

示例层次当你在故事板使用UIScrollView,你需要确保滚动视图能够计算其内容的大小。如果你没有足够的约束,那么你将在Interface Builder得到一个错误:

滚动的内容大小歧义

点击即需要有制约这个错误会告诉你的信息图标触摸滚动视图的所有侧面,并确保您可以从左到右和从上到下跟踪连续的约束线。

您可以通过或不通过已添加的内容视图来实现此目的。我将向您展示如何在没有滚动视图中的内容视图的情况下执行此操作,只是因为这种方式的约束较少,因此输入较少。

  1. 添加滚动视图到根视图
  2. 约束滚动视图到它的父(根视图)的顶部/左/顶部/底部。请记住,如果你想在屏幕的整个宽度来约束关掉利润率
  3. 添加标签1和标签2滚动视图
  4. 约束顶级/领先的标签1 /底部滚动视图
  5. 约束顶级/后/标签2的底部滚动视图
  6. 约束标签1的后缘到标签2的前缘与0空间
  7. 约束标签1米的宽度为等于滚动视图的宽度
  8. 将标签1的高度限制为等于滚动视图的高度
  9. 约束的宽度和标签2的高度为等于标签1
  10. 的宽度和高度没有步骤10 :)
+0

我能够得到它的工作!我的垂直滚动,它看起来像你的例子是水平的。但是我缺少的部分是你在这里与标签1和2如何相互作用以及相等的高度。我会将其标记为正确的。非常感谢您的帮助和耐心! – Philip

+0

对不起,我一定误解了你之后的滚动方向,但是当你发现基本方法在任一轴 – Paulw11

0

ScrollViews尤其是在他们喜欢明确地知道他们有多少应该滚动。处理这个我已经找到了最好的办法是有一些限制以下层次:

-Scroll View 
    -Content View 
     -View (constrained to top, bottom, leading, trailing anchors) 
      -Your other views (e.g. Label) 

由具有一个视图生活的内容视图下方,然后将包含所有其他意见的该视图中,则滚动型则知道它应该滚动多少(它只是使用一个子View的大小),而不管子View中有多少东西。

让我看看是否可以从我的一个项目中捕捉示例图片。与此同时,给这个层次结构一个尝试,让我知道它是否适合你。您可能会将标签约束到子View的顶部和主要锚点,然后将高度限制为高于屏幕的高度(例如1000单位)。

让我知道如果您有任何问题。

编辑:下面

Content View has a child View which holds all of your other Views

+0

这似乎没有做任何不同的事情。 – Philip