使用自动布局在 xcode 的滚动视图中实现带有约束的内容视图的正确方法是什么?
What is the proper way to implement contentview with constraints in a scrollview in xcode using autolayout?
最近我正在测试在 xcode 中做一个非常复杂的视图,只使用滚动视图和以编程方式添加的 imgviews。像这样
我所做的是,我在滚动视图中放置了一个名为 contentview 的 UIView,然后在 contentview 中添加了很多 ImageView。实物比插图复杂得多,所以我不能使用tableview。很抱歉插图不好,但我想你会明白的。
一切都很好,直到我尝试在代码中添加最后一个约束,它在图片中标记为红色。当我这样做的时候,它打破了整个约束链。
换句话说,这是有效的
V:|-[view1(30)]-[view2(30)]-[view3(30)]
这不是
V:|-[view1(30)]-[view2(30)]-[view3(30)]-|
顺便说一句,正确的方法是什么?我试图将图像视图直接添加到滚动视图本身,但我无法使视图像这样使用自动布局
H:|-[view]-| The superview here is a scrollview
结果,这个视图的宽度会很窄。我猜 scrollview 没有宽度值或什么?那是我的猜测。这就是为什么我添加了一个内容视图作为所有图像视图的容器。
试试这个,它会起作用。 - http://natashatherobot.com/ios-autolayout-scrollview/
总结 -
将滚动视图添加到主视图。
添加一个 UIView(我们称之为内容视图)到滚动视图。
现在将你所有的视图添加到上面的 UIView 中。
为它们中的每一个设置约束,使所有边的间距为0。最后在内容视图和主视图之间添加等高和等宽约束。
好的,终于完成了自己的工作。
使 scrollview 和 contentview 以及里面的所有其他东西自动工作的关键是只使用自动布局。
1、手动给self.view添加scrollview,给scrollview添加一个contentview。将滚动视图和内容视图都设置为 setTranslatesAutoresizingMaskIntoConstraints(false)
2、设置scrollview为H:|[scrollview]|和 V:|[scrollview]|,将 contentview 设置为 H:|[contentview]|和 V:|[contentview]|
3、现在尝试将Views添加到content view中,并将它们的constraints设置到contentview中。您应该看到,当视图大于当前 window 大小时,滚动视图开始滚动。 IE,这个设置会自动设置scrollview.contentSize using autolayout
最近我正在测试在 xcode 中做一个非常复杂的视图,只使用滚动视图和以编程方式添加的 imgviews。像这样
我所做的是,我在滚动视图中放置了一个名为 contentview 的 UIView,然后在 contentview 中添加了很多 ImageView。实物比插图复杂得多,所以我不能使用tableview。很抱歉插图不好,但我想你会明白的。
一切都很好,直到我尝试在代码中添加最后一个约束,它在图片中标记为红色。当我这样做的时候,它打破了整个约束链。
换句话说,这是有效的
V:|-[view1(30)]-[view2(30)]-[view3(30)]
这不是
V:|-[view1(30)]-[view2(30)]-[view3(30)]-|
顺便说一句,正确的方法是什么?我试图将图像视图直接添加到滚动视图本身,但我无法使视图像这样使用自动布局
H:|-[view]-| The superview here is a scrollview
结果,这个视图的宽度会很窄。我猜 scrollview 没有宽度值或什么?那是我的猜测。这就是为什么我添加了一个内容视图作为所有图像视图的容器。
试试这个,它会起作用。 - http://natashatherobot.com/ios-autolayout-scrollview/
总结 -
将滚动视图添加到主视图。
添加一个 UIView(我们称之为内容视图)到滚动视图。
现在将你所有的视图添加到上面的 UIView 中。
为它们中的每一个设置约束,使所有边的间距为0。最后在内容视图和主视图之间添加等高和等宽约束。
好的,终于完成了自己的工作。
使 scrollview 和 contentview 以及里面的所有其他东西自动工作的关键是只使用自动布局。
1、手动给self.view添加scrollview,给scrollview添加一个contentview。将滚动视图和内容视图都设置为 setTranslatesAutoresizingMaskIntoConstraints(false)
2、设置scrollview为H:|[scrollview]|和 V:|[scrollview]|,将 contentview 设置为 H:|[contentview]|和 V:|[contentview]|
3、现在尝试将Views添加到content view中,并将它们的constraints设置到contentview中。您应该看到,当视图大于当前 window 大小时,滚动视图开始滚动。 IE,这个设置会自动设置scrollview.contentSize using autolayout