我正在做几个项目,它发生了同样的错误。
我仍然无法弄清楚是什么原因造成的。是我的代码问题还是 Xcode 9 beta 问题?
MyApp[22724:4000717] API 错误:(null)返回 0 宽度,假设 UIViewNoIntrinsicMetric
我正在做几个项目,它发生了同样的错误。
我仍然无法弄清楚是什么原因造成的。是我的代码问题还是 Xcode 9 beta 问题?
MyApp[22724:4000717] API 错误:(null)返回 0 宽度,假设 UIViewNoIntrinsicMetric
@rmaddy 正确链接到另一个 SO 答案,但是还有其他与自动布局实践相关的可能性。
该消息还可能与项目中定义的自动布局实现和唯一约束有关。使用真实设备时似乎通常不会出现此消息。
UIKit 框架 -> UIView API 全局变量 UIViewNoIntrinsicMetric
UIViewNoIntrinsicMetric
给定数字视图属性缺少内在指标。
UIView 实现实践
每个 UIView 子类都应该实现intrinsicContentSize并返回它认为适合它的大小。例如:
UIViewNoIntrinsicMetric
的宽度,您可以使用宽度来代替。return CGSizeMake(UIViewNoIntrinsicMetric, 50)
UIView 的基本实现updateConstraints
将调用intrinsicContentSize,它将使用从它返回的内容大小来向UIView 添加约束。
UIView API 属性 intrinsicContentSize
intrinsicContentSize
接收视图的自然大小,仅考虑视图本身的属性。
自定义视图通常会显示布局系统不知道的内容。设置此属性允许自定义视图与布局系统通信,它希望基于其内容的大小。这个固有尺寸必须独立于内容框架,因为例如,无法根据改变的高度动态地将改变的宽度传达给布局系统。如果自定义视图没有给定维度的固有大小,则它可以
UIViewNoIntrinsicMetric
用于该维度。
结论
Xcode 错误:
返回 0 宽度,假设 UIViewNoIntrinsicMetric
因此,我们可以知道 Xcode 假设UIViewNoIntrinsicMetric大小,因为项目中的某些 UIView 返回宽度大小为 0。
如果您在真实设备上部署时仍然收到消息,那么我会特别注意您的布局限制。