ChatGPT解决这个技术问题 Extra ChatGPT

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

我刚刚在 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 上运行。

E
Enrico Susatyo

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

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

https://i.stack.imgur.com/L7SHz.png

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

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

https://i.stack.imgur.com/eTZdU.png

https://i.stack.imgur.com/jBrqo.png

这两种方法不是破坏性的,也不会消除您的约束。如果有的话,它会表明您可能需要对您的约束进行细微的调整。


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

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

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

我做了以下事情:

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

然后我在视图中再次重新排序了我的对象。

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


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

https://i.stack.imgur.com/m8JGt.png

请看意思:-

https://i.stack.imgur.com/dsbpz.png

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


s
sivi

如果您在 xCode 中查找更新帧时遇到问题,可以这样做:

https://i.stack.imgur.com/vK6Fv.png


c
clearlight

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


注意:除了烦人的 IB 警告之外,代码运行良好并且做正确的事情(包括显示范围栏)
是的,我不断更新框架,它只是向上移动一个像素。警告仍然存在。再次更新 Frame,它向下移动 1 个像素。这只会永远持续下去......当代码运行时,它很好。