gpt4 book ai didi

swift - UIScrollView 导致 "Misplaced Views"AutoLayout 问题

转载 作者:搜寻专家 更新时间:2023-10-31 08:17:02 32 4
gpt4 key购买 nike

当我使用 UIScrollView 时,我遇到了一个奇怪的 AutoLayout 相关问题(没有它就不会出现该问题)。

我有一个 UIScrollView,它被限制在 UIView 的边界内(包含在 UIViewController 中),在其中,我是试图并排放置 UILabelUITextField。我已将 UILabel 限制在左边界和上边界,并限制了它的宽度和高度(请参见下面的屏幕截图):

Properly functioning constraints for the UILabel

紧挨着此 UILabel 的是一个 UITextField,它被限制在左侧、顶部和右侧,并且高度也受到限制。但是,这会导致出现“错误放置的 View ”警告,指出“预期 width = 163,实际 width = 413”,如下面的屏幕截图所示:

UITextField constraints causing Misplaced Views issue

当我选择“Reset to Suggested Constraints”时,“Misplaced Views”问题消失了,但在它的位置我留下了 413 点的 width 约束,这是我希望避免,因为我不希望这个 UIViewController 在较小的设备上水平滚动。

最佳答案

ScrollView 有一个大小(它在屏幕上占据的大小)和一个内容大小(整个可滚动区域的大小)。在自动布局中,内容大小是根据 ScrollView 中项目的约束自动计算的。这是一个问题,因为您试图使 ScrollView 具有与屏幕相同的宽度,然后将项目限制为该宽度。当您这样做时,自动布局会坚持为您的文本字段指定一个明确的宽度,以便它可以计算出您的可滚动区域的宽度。

要执行您想要的操作,请执行以下操作:

  1. 将“内容 View ”添加到您的 ScrollView 。此 View 将是 ScrollView 中唯一的顶级项目。它将把你所有的内容作为它的 subview 。拖出一个 UIView 并将其添加到您的 ScrollView 中。将其顶部、前导、底部和尾部边缘约束到 ScrollView 。将其宽度限制为 ScrollView 的宽度。给它一个高度限制,并将其设置为您希望内容区域有多大。

  2. 将所有标签和文本字段添加到此内容 View 。现在,您可以将它们限制在内容 View 的中心或限制在边缘,它会按您的意愿工作。

关于swift - UIScrollView 导致 "Misplaced Views"AutoLayout 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27337518/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com