“API错误:(null)返回0宽度,假设Xcode 9 beta中的UIViewNoIntrinsicMetric”

时间:2017-07-22 16:32:30

标签: xcode xcode9-beta xcode9

我正在处理几个项目,它发生了同样的错误。

我仍然无法弄清楚是什么导致了它。这是我的代码或Xcode 9 beta的问题吗?

  

MyApp [22724:4000717] API错误:(null)返回0宽度,假设UIViewNoIntrinsicMetric

2 个答案:

答案 0 :(得分:3)

@rmaddy正确链接到另一个SO答案但是还有其他与自动布局实践相关的可能性。

该消息还可能与自动布局实现和项目中定义的唯一约束有关。在使用真实设备时,通常不会出现此消息。

UIKit框架 - > UIView API全局变量 UIViewNoIntrinsicMetric

UIViewNoIntrinsicMetric缺少给定数字视图属性的内在指标。

UIView实施实践

每个UIView子类都应该实现 intrinsicContentSize 并返回它认为适合它的大小。例如:

  • 如果您知道UIView的宽度,则使用返回CGSizeMake(200,50)。
  • 如果您不知道视图的宽度,则使用UIViewNoIntrinsicMetric而不是宽度。 return CGSizeMake(UIViewNoIntrinsicMetric, 50)

updateConstraints的UIView基础实现将调用 intrinsicContentSize ,它将使用从其返回的内容大小向UIView添加约束。

UIView API属性 intrinsicContentSize

intrinsicContentSize接收视图的自然大小,仅考虑视图本身的属性。

自定义视图通常包含显示布局系统不知道的内容。通过设置此属性,自定义视图可以根据布局系统的内容与布局系统进行通信。此内在大小必须独立于内容框架,因为例如,无法基于更改的高度动态地将更改的宽度传达给布局系统。 如果自定义视图没有给定维度的内在大小,则可以使用 该维度UIViewNoIntrinsicMetric

<强>结论

Xcode错误:

  假设UIViewNoIntrinsicMetric

返回0宽度

因此,我们可以了解Xcode假设 UIViewNoIntrinsicMetric 大小,因为项目中的某些UIView返回了宽度大小为0的情况。

如果您在真实设备上部署时仍然收到消息,那么我会特别注意您的布局限制。

答案 1 :(得分:-2)

我已经应用了许多解决方案,但除了用两种不同的方式将“ WKWebView”降级为“ UIWebView”外,什么也没发现: 1.只需将其添加到您的config.xml

<preference name="CordovaWebViewEngine" value="CDVUIWebViewEngine"/>

OR

  1. 使用此命令卸载Ionic WebView插件。
  

ionic cordova插件删除cordova cordova-plugin-ionic-webview   -保存

这里是链接:

https://ionicframework.com/docs/wkwebview/#downgrading-to-uiwebview