我尝试构建类似于ios照片库的UI:导航视图控制器,滚动视图占据父视图的80%高度和100%宽度,集合视图控制器占用其余部分高度和100%宽度。所以这就是它的样子:
蓝色区域是scrollview及其内容视图。底部是一个集合视图,假设其行为类似于旋转木马。您可以在以下屏幕截图中看到我设置的约束:
我想设置scrollview高度,使其仅占据父视图区域的80%,而集合视图占用其余部分。但是,我似乎无法解决滚动视图约束问题,例如autolayout无法解析scrollview的高度/ y位置。正如您在上面的图片中看到的,我尝试将scrollview的高度设置为父视图的50%,但autolayout仍然抱怨无法解析高度。如果我让界面构建器解决问题,它只是在scrollview内的内容视图中添加间距并将其向下推。您可以在以下屏幕截图中看到。
答案 0 :(得分:2)
您的视图heirarchy已正确设置,因此非常好,您正在追踪要添加的约束。我将从第1步开始编写所有约束。
UIScrollView
superView
添加一个top,leading和trailing约束到UIScrollView
。同时在superView
和UICollectionView
之间添加相等的高度约束,并将乘数设置为0.8。UIScrollView
添加到superView
下方,并为UICollectionView
添加前导,尾随和底部。同时在UIScrollView
和UIScrollView
之间添加垂直间距。 UIScrollView
内添加 contentView 。将 contentView 的行距,顶部,底部和尾部添加到UIScrollView
。一旦你这样做,约束就会破坏,Xcode会抱怨。 现在您需要做的更多是在UIScrollView
和 contentView 之间添加相同的高度和宽度约束。将此相等高度约束的优先级(假设您需要垂直滚动)设置为250,以便当UIViewController
内的内容变得太大而无法完全显示时,它会中断。现在就这个额外的间距问题而言。您需要做的是,选择包含UIScrollVIew
的{{1}},然后为此UIViewController
选择属性检查器,取消选中 调整滚动查看insets 选项。有关屏幕截图,请查看this。
答案 1 :(得分:1)
正如我从上面看到的那样做以下几点。