UIScrollView 和 Autolayout 防止 contentview 压缩
Posted
技术标签:
【中文标题】UIScrollView 和 Autolayout 防止 contentview 压缩【英文标题】:UIScrollView and Autolayout prevent contentview compression 【发布时间】:2015-02-11 11:09:42 【问题描述】:在 IB 中,我有一个包含滚动视图的视图控制器。
红色视图在滚动视图内
红色视图的最小高度为 504 像素,因此在 iphone 4 上它应该滚动,在 iphone >=5 上它应该扩展和布局按钮以填充空白。
我将红色视图的约束从滚动视图的顶部、前导、尾随和底部设置为 0,并且水平和垂直居中。 我的 redview 的最小高度为 504
蓝色和绿色视图的高度相等
对于 iphone >=5 一切正常,但对于 iphone 4,红色视图被压缩为滚动视图的大小,并且按钮相互接触。
经过多次约束调整后,我想知道是否可以通过自动布局在 IB 中 100% 做我想做的事情
【问题讨论】:
【参考方案1】:你说(强调我的:)
“我将红色视图的约束从滚动视图的顶部、前导、尾随和底部设置为 0,并且水平和垂直居中。我的红色视图的最小高度为 504”
首先,我可以看到一些冗余(粗体部分)。您的 redView 不需要垂直约束,因为您已经将它固定在滚动视图的边缘并具有定义的最小高度。
但这可能是按钮靠得更近的原因,也可能不是,这取决于其他约束条件。
您是否为按钮设置了垂直空间限制?
【讨论】:
我已经为蓝色视图设置了垂直空间限制(最小高度 12 像素)并且按钮有 60 像素的高度限制和蓝色视图的顶部和底部 0 像素 删除 redview 和滚动视图的垂直居中给了我在 iphone 4 上想要的结果,但在 iphone > 5 上,redview 没有延伸到滚动视图的底部 在最近的类似情况下,我选择将 redView 设置为“背景视图”。你考虑过那个选项吗?我的意思是,您可以尝试将 redView 放在滚动视图的“外部和后面”(在 IB 的分层视图中“在”滚动视图的“上方”)。事情会更容易控制/遵循这种方式。 或者您可以根据您希望在包含冲突解决的方案中“占上风”的限制为您的约束应用不同的优先级。以上是关于UIScrollView 和 Autolayout 防止 contentview 压缩的主要内容,如果未能解决你的问题,请参考以下文章
UIScrollView 和 Autolayout 防止 contentview 压缩
无法在 UIScrollView 和 AutoLayout 中使用 AspectFill 滚动 UIImageView
UIScrollView 和 Autolayout:ContentOffset 正在改变,但内容视图没有移动
使用 UIScrollView 和 AutoLayout 以编程方式创建控制器无法正确调整视图大小