【问题标题】:iOS 7: Misplaced View Frame for "Label - Label" will be different at run timeiOS 7:“标签 - 标签”的错位视图框架在运行时会有所不同
【发布时间】:2013-09-16 11:29:53
【问题描述】:

我刚刚在 iOS 6 上完成了一个应用程序,并在一周前购买了一个开发者帐户,因此没有太多时间使用 iOS 7 SDK。刚刚下载了Golden Master版本并尝试升级我的应用程序以兼容iOS 7。

我收到了很多警告说

“标签 - 标签”的错位视图框架在运行时会有所不同。

我无法运行该程序。该项目包含 tableview,它正在解析和显示来自 RSS 的 XML 提要。

如何解决这个问题?

【问题讨论】:

  • Xcode 5 和 iOS 7 仍处于保密协议下,因此您的问题可能得不到任何回复。
  • @rckoenes 谢谢。我应该在 Apple 开发者论坛上问这个问题吗?
  • 那是正确的地方。
  • 你在使用带约束的自动布局吗?
  • @null 是的,我正在使用自动布局。不知道你所说的约束是什么意思。之前有自动布局错误,但我将部署目标从 iOS 5 更改为 iOS 6,这些错误就消失了。但是这些警告仍然存在。我希望它可以在 iOS 6 和 iOS 7 上运行。

标签: ios ios7 storyboard uistoryboard nslayoutconstraint


【解决方案1】:

接受的答案将修复问题,但这不是一个好的解决方案,因为它会消除您的所有限制。如果您在约束上花费了数小时,请不要这样做。

如果您单击警告旁边的三角形,您可以获得错误位置的解释。然后你可以将框架移动到它应该在的位置。例如:

在这种情况下,我只是将文本视图的 y 位置移动到 94,警告就会消失。这是因为当应用程序运行时,我的一个约束会强制视图位于其他位置,但位置与它当前在情节提要中的位置不同。


另一种将框架移动到正确位置的方法是单击情节提要中视图控制器名称旁边的警告,然后单击黄色警告标志,然后单击更新框架。

这两种方法没有破坏性,也不会消除您的约束。如果有的话,它会表明你可能需要对你的约束做一些小的调整。

【讨论】:

  • 如果我想使用画布中的尺寸而不是运行时的尺寸怎么办?我该怎么办?
  • @GelFermis 一般来说,您必须重新设置约束,但先尝试按“更新约束”,它会尝试为您执行此操作。
  • @EnricoSusatyo 我尝试按“更新约束”,然后按“修复错位”,但警告仍然存在。这是否意味着我必须修改我的约束?
  • 它发生在我身上和 Gel Fermis 一样。我每次打开故事板时都需要更新帧。有什么解决办法吗?这是正确的解决方案,但不能解决我的问题,因为我每次加载情节提要时都需要更新帧。有什么解决办法吗?谢谢
【解决方案2】:

我遇到了同样的问题,我得到以下来自 Apple 的回复:

您需要更新约束以匹配这些视图的框架。

我做了以下事情:

编辑器 -> 解决自动布局问题 -> 清除 ** 视图控制器中的所有约束

然后我在视图中重新排列了我的对象。

PS:先试试 Enrico 的解决方案。

【讨论】:

  • 感谢它对我有用。虽然我必须选择自定义表格视图单元格,然后使用“清除所有约束”选项。
  • 这将清除您的约束!请参阅 Enrico 的回答。
  • 所以如果我在某些视图中添加了自动布局,并且意外更改了框架或仅设置了一个视图不正确,您是说我需要清除约束,并将视图保留在静态位置?从一开始就设置的其他视图约束呢?请参阅@Enrico 的回答。
  • @eridb 什么静态位置 ??!!!呸!谁说的??我刚刚重新排序了我的约束。
  • 是的,我知道,但我想告诉你更新答案,并告诉其他机会,以免得到虚假的反对票。我并不是因为您知道这是如何完成的,所以我不会对您投反对票,只是我要求使这个问题更有价值。 P.S 从你的名字来看,我不确定你是否收到了消息,你没有地址:P
【解决方案3】:

我遇到了同样的问题,您需要更新约束或更新框架。 在情节提要上,您有一个小工具栏,如下图所示。

请看意思:-

您可以选择“更新框架”或“更新约束”并使用“重置为建议的约束”。 这将解决有关错位视图的问题。 不要拖放视图来调整布局。改为编辑适用的约束。 如果您不清楚,请告诉我。

【讨论】:

    【解决方案4】:

    如果您在 xCode 中找不到 Update Frames,可以这样做:

    【讨论】:

      【解决方案5】:

      没有一个答案适用于所有情况。在 Xcode 的最新版本中,使用 UISearchBar,在 IB 中启用范围字段会使搜索字段显示为双倍高度(但不显示其下方的范围栏)。无论您是否向搜索字段添加高度约束(任何高度),您都会收到警告,即它是一个错位的视图,在运行时为 88 H,但在 IB 中为 44 H。更新帧(任何或所有帧)并不能解决它。似乎是 IB 中的一个错误。

      【讨论】:

      • 注意:除了烦人的 IB 警告之外,代码运行良好并且做正确的事(包括显示范围栏)
      • 是的,我一直在更新框架,它只是向上移动了一个像素。警告仍然存在。再次更新 Frame,它向下移动 1 个像素。这只会永远持续下去......当代码运行时,它很好。
      猜你喜欢
      • 1970-01-01
      • 2013-09-15
      • 2017-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-14
      • 2013-09-26
      相关资源
      最近更新 更多