使用自动布局禁用UIScrollView中的水平滚动

我想创build只有垂直滚动的视图。 事实certificate,这是史诗难以做的IO。 我已经完成了这个步骤:

1)在故事板中创buildUIViewController;

2)在UIViewController的View里面添加ScrollView,并向每一边添加0个约束。

3)在滚动视图中添加元素,结果如下: 在这里输入图像说明

我启动我的应用程序后,所有的作品,但:

1)我应该如何禁用水平滚动? 我添加0约束右侧我的scrollView + 0约束右侧我的uilabel(因为你看在屏幕上,因为它没有附加在右边,它有不同的约束,但在属性我设置约束= 0)和我想的标签文本应该是在我的屏幕边界,但是当我启动应用程序,我可以滚动到右侧,即uilable文本没有包装,我的scrollview只是resize,以适应text.I试图设置我的scrollView在代码中: scrollView.contentSize = CGSize(UIScreen.mainScreen().bounds.width, height: 800) ,但没有帮助。

2)如果我滚动到很多,然后出现空白,这不是很酷,如何解决?

1)当scrollView的内容宽度超过scrollView的宽度时,水平滚动自动启用。 因此,为了避免横向滚动,必须使scrollView中的内容宽度小于或等于scrollView宽度。

Leading spacetrailing space不能将特定的宽度设置为视图,只是将其拉伸。 在常规视图中,它们不会超过视图的宽度,但scrollView实际上是一个特殊的视图,具有无限的内容宽度。 因此,scrollView中的trailing spaceleading space约束会将视图的宽度更改为其最大可能值(如果使用UILabel,则可以看到resize以适应文本)。

为了避免横向滚动,你需要设置每个视图的具体宽度,小于或等于scrollView的宽度。 视图的具体宽度可以用width constraints来设置。

而不是设置每个视图宽度,更好地添加一个视图容器和设置宽度,并在其中放置视图根据需要。

视图层次:

 View -> ScrollView -> ContainerView -> UILabel -> UILabel -> ... other views that you need 

Autolayout约束:

 ScrollView -> leading space to View : 0 -> trailing space to View : 0 -> top space to View : 0 -> bottom space to View : 0 Container View -> leading space to ScrollView : 0 -> trailing space to ScrollView : 0 -> top space to ScrollView : 0 -> bottom space to ScrollView : 0 -> width equal to ScrollView : 0 

设置width equal constraint ctrl +从containerView scrollView拖动到scrollView

宽度相等的约束

2)垂直滚动取决于内容的总高度。 如果containerView的最后一个元素的bottom space to superview值超大,则可以使用空白空间。

或者你的意思是反弹效应? 您可以禁用scrollView的垂直反弹。