UIScrollView 忽略约束

Posted

技术标签:

【中文标题】UIScrollView 忽略约束【英文标题】:UIScrollView ignoring constraints 【发布时间】:2016-04-15 18:12:02 【问题描述】:

所以,我有一个带有图像、两个标签和另一个图像的视图控制器。标签会调整大小以适合我为它们设置的文本 - 我试图让每个项目与它的上方和下方的空间相等。除了我的最后一张图片,一切都很好。

最后一张图片有 Aspect Fit 模式,因为我希望它缩小以适应它所在的任何屏幕(我认为这部分效果很好)。当前设置为 8 的约束,用于在其上方标注前导、尾随和垂直;对于底部约束,大于或等于 20 到底部边距(基于我在教程中看到的内容。)

问题是,当我运行模拟器时,我的最终图像远低于其他所有图像,而不是直接位于标签下方。图像之后直到屏幕底部还有一大块空间。为什么会发生这种情况,因为它被设置为低于标签 8?

simulator scrolled slightly below label

simulator scrolled even lower to image

【问题讨论】:

你把所有标签和Imageview直接放在scrollview上了吗? 好吧,我有视图 > 滚动视图 > 另一个视图 > 标签和图像。我可以尝试将所有内容直接放在滚动视图上,看看会发生什么 不,这是正确的做法。 好的。我相当肯定问题出在宽高比适合模式上——我想要的是图像高度根据给定的视图宽度+图像比例自动调整大小。 (基本上我希望它根据宽度自行缩小。)当我给 imageview 一个设定的高度时,图像不再跳到屏幕底部,并且仍然被缩放。这不是我想要的,但它确实有效。 【参考方案1】:

尝试从超级视图而不是边距给出约束。每当您从边距中给出约束时,都会使用 superview 更改它。第二件事尝试设置底部等于 20 不大于或等于。 (根据您的约束假设)

您的限制应该如下所示(我的建议):

滚动视图 - 前导、尾随、顶部、底部

Containerview - 前导、尾随、顶部、底部、固定高度、容器中的水平中心

标签和图像:前导、尾随、顶部和固定 - 高度(如果您想要图像中的可变大小高度,则不要给出高度,而是给出具有更大、相等或仅相等的超级视图的底部)

希望这会有所帮助:)

【讨论】:

以上是关于UIScrollView 忽略约束的主要内容,如果未能解决你的问题,请参考以下文章

调整容器 uiscrollview 中所有 uiscrollview 的大小

何时使用 UITouch 与 UIScroll

UIScroll 及其嵌套元素

UIScroll 视图未按预期工作

UIScrollView增加刷新

UICollectionViewCell与UIScrollView取消didSelectItemAtIndexPath