使用autolayout在xcode的scrollview中使用约束实现contentview的正确方法是什么?

时间:2015-08-29 09:14:43

标签: xcode autolayout scrollview

最近,我正在测试在xcode中使用除了scrollview和以编程方式添加的imgviews之外的任何内容来执行非常复杂的视图。喜欢这个

enter image description here

我做的是,我在一个scrollview中放了一个名为contentview的UIView,然后在contentview中添加了很多ImageView。真实的东西比插图复杂得多,所以我不能使用tableview。抱歉这个可怜的插图,但我想你会明白这个想法。

一切都很好,直到我尝试在代码中添加最后一个约束,在图片中标记为红色。当我这样做时,它打破了整个约束链。

换句话说,这是有效的

V:|-[view1(30)]-[view2(30)]-[view3(30)]

这不是

V:|-[view1(30)]-[view2(30)]-[view3(30)]-|

顺便说一句,无论如何,这样做的正确方法是什么?我尝试将图像视图直接添加到scrollview本身,但我无法使视图像这样使用自动布局

H:|-[view]-|  The superview here is a scrollview

结果,这个视图的宽度非常窄。我想scrollview没有宽度值或者某个?这是我的猜测。这就是为什么我添加了一个内容视图作为所有图像视图的持有者的原因。

2 个答案:

答案 0 :(得分:0)

试试这个,它会起作用。 - http://natashatherobot.com/ios-autolayout-scrollview/

总结 -

  1. 将滚动视图添加到主视图。

  2. 添加UIView(让我们称之为内容视图)以滚动视图。

  3. 现在将您的所有观点添加到上面的UIView。

  4. 为每个人设置约束,以便所有边的分离为0.最后在内容视图和主视图之间添加相等的高度和相等的宽度约束。

答案 1 :(得分:0)

好的,最后我做了自己的工作。

使用除了自动布局以外的其他内容,使scrollview和contentview以及其他所有内容自动工作的关键就是这个。

1,手动将scrollview添加到self.view,将contentview添加到scrollview。将scrollview和contentview都设置为setTranslatesAutoresizingMaskIntoConstraints(false)

2,将scrollview设置为H:| [scrollview] |和V:| [scrollview] |,将contentview设置为H:| [contentview] |和V:| [contentview] |

3,现在尝试将视图添加到内容视图并将其约束设置为contentview。您应该看到,当视图大于当前窗口大小时,scrollview开始滚动。 IE,此设置将使用autolayout

自动设置scrollview.contentSize