ios - 自动布局中 UIScrollView 缺少约束 x 和高度

标签 ios xcode uiview uiscrollview autolayout

免责声明:我看到了一种 SO 技术,它包括向 UIScrollView 添加一个 UIView(称为 contentView)并将所有内容放入此 contentView。我不想使用这种技术,因为我想理解为什么我会遇到当前问题。

我在 UIViewController 的默认 UIView 上有一个 UIScrollView,它的 UIScrollView 有 4 个约束:每侧一个(尾随、顶部、前导、底部),以便它粘附到其父 UIView。 这行得通!

Working UIScrollView constraints

但是当我想将 UIImageView 添加到 UIScrollView 并且我希望它粘附到其父侧(尾随、顶部、前导)+ 特定高度时,现在我遇到了问题。

Non working UIImageView constraints

它说:

Scroll View: Has ambiguous scrollable height
Scroll View: Needs constraints for: X position or width

最佳答案

xcode 抛出这些错误的原因是因为它无法在运行时计算 UIScrollViewUIImageView 框架。

当您为 UIScrollView 添加与其父 View 相关的约束时,它会告诉 xcode 绘制与其父 View 一样大的 ScrollView 。但是,当您为 UIImageView 添加与 UIScrollView 大小相关的约束时,它会告诉 xcode 绘制与 UIScrollView 内容大小一样大的 ImageView 。请注意 UIScrollView 大小和内容大小是两个不同的东西。

如果我们把它想象成一个房子, ScrollView 大小基本上就是窗口大小,它是一个可以用来查看房子内部的大小。内容大小是房子的大小。这就是为什么 ScrollView 的大小和内容大小之间没有关系的原因。

您可以通过两种方式解决您的问题,首先是通过编程方式或使用 IB 设置 ScrollView 内容大小。虽然,我不确定以编程方式设置它是否会消除警告。您可以按照答案 here 在 IB 中进行设置。 .第二种方法涉及向您的 UIImageView 添加更多约束。通过添加底部约束和宽度约束,xcode 可以计算 UIScrollView 内容大小,这将消除此警告。

关于ios - 自动布局中 UIScrollView 缺少约束 x 和高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33860294/

相关文章:

iphone - iOS:何时使用多个 NIB 或同一 NIB 上的多个 View ?

ios - 绑定(bind)表源继承自什么类

ios - 最近部署的我的应用程序 - 某些用户现在无法从旧设备运行(64 位问题)

iphone - IOS注销时如何释放app保留的对象或内存

Swift:无法以编程方式编辑自定义表格单元格的属性

swift - 当碰撞发生时如何快速执行操作? (我没有使用 Sprite 套件)

ios - 如何使用 Swift 选择图像的一部分、裁剪并保存?

ios - UITableView reloadSection 导致缺少显示的单元格

c++ - Xcode 不会进入类构造函数

ios - 如何使 self.view 成为 View Controller 的全高(同时占据导航栏和状态栏的高度)