2014-11-04 167 views
21

因此,我试图仅在故事板中创建UIScrollView,允许我为VC的高度添加滚动标签。下面是我所做的:故事板中的UIScrollView不能与iOS 8一起使用Size Classes和Autolayout

  1. 创建UIScrollView是拿起任意宽度的大小任意高度VC

  2. 制造约束0间距顶部,底部,左侧近邻,右

  3. 创建了UIScrollViewsubView的视图,其宽度与任何高度为VC但高度为1500的宽度相同(因为我只希望它垂直滚动)。

  4. 设置约束近邻为0只左,上,右,并设置高度约束为1500

  5. 我把一个标签在subView的顶部和底部

当我在iPhone 6上运行应用程序时,不会像我想要的那样垂直滚动。任何想法为什么这不起作用?提前致谢。

回答

45

要获得滚动,您必须将子视图(“内容视图”)固定在滚动视图的顶部,左侧,底部和右侧。 另外,你必须给它(对“内容视图”)一个明确的(与滚动视图无关的)高度和宽度,因为这些被scrollview用来计算它的内容大小。 你的情况设置宽度等于VC主视图宽度和高度为1500. 当宽度或高度大于scrollview大小时,它将滚动。

滚动视图约束(固定到主视图)

scroll view constraints

内容视图(固定到滚动型+高度1500,宽度= MAINVIEW宽度)+标签约束(作为一个例子:20 20从内容视图左上图)

content view + label constraints

+0

完美!它现在按预期工作,感谢您的帮助;图像很棒。 – Lucas 2014-11-06 22:40:08

+0

这是一个梦幻般的解释!非常感谢。 我还能够在Interface Builder中添加[contentView.width == scrollView.width]约束,而不是明确的contentView宽度,以轻松获得垂直滚动滚动视图。 – Des 2014-12-19 12:04:13

+1

这不再适用于Xcode版本6.1.1(6A2008a)。有其他人遇到过这个问题吗?将内容视图固定到滚动视图将导致在我的测试中没有任何内容显示这个简单的新项目。 – kakubei 2015-01-30 11:46:40

1

你是否将内容大小设置得比屏幕本身大?就你而言,身高只有更大。

正如Apple文档所述: “必须将contentSize属性设置为可滚动内容的大小,这指定了可滚动区域的大小。”

+0

如上所述,滚动视图从内容视图推断其内容大小 – Lucas 2014-11-06 22:22:54

+1

因此,我们如何才能通过使用故事板先生来实现这一点? – guness 2015-03-03 21:41:42

0

唯一的解决办法是添加约束到滚动视图的子视图的底部子视图的右侧和底部。 同时检查从上到下的所有视图是否都有适当的约束以及高度。 对于滚动视图的包装视图,将等宽和等高限制添加到其超视图。