Xcode 5布局错误 - 标签的错位视图框架在运行时将会有所不同

18

我刚安装了Xcode 5,目前正在准备在下周发布到iOS 7的应用商店中。但是我遇到了很多错误和警告。

在一个应用中,我有一个UIPickerView、UITextFields和一堆UILabels。在这个应用程序中,在storyboard文件中几乎所有的控件都出现了"非法配置"(红色)错误。我不知道这个错误是什么或者如何修复它。我需要一些帮助。我无法完全重建这个文件,因为有20个复杂的视图。

在另一个应用程序中,有一个UIScrollView包含了一堆UILabels和UITextFields,以及一个UITextView,它是通过编程方式创建的,并基于您在(UITableView中选择的内容)上设置文本,同时根据内容自动调整大小。UIScrollView会自动调整大小以适应UITextView的新尺寸。这个应用程序可以编译和构建,UITextView也被创建了,但是它没有包含文本,可能是因为它现在调整大小不正确。UIScrollView现在也会水平滚动,而且不应该这样。这个应用程序只会给出(黄色)警告,所有的警告都说:

"Label-Symbol:"的视图框架错位将在运行时不同。 其中有4个控件,包括这个Label和另一个Text Field以及ScrollView。

因为这是我第一次适应新版本的Xcode和iOS,所以我需要任何帮助。

P.S:关于"非法配置"错误的详细信息如下:
iOS 6.0之前的版本上使用自动布局

谢谢!


请查看此处:https://developer.apple.com/devcenter/ios/index.action# - CRDave
7个回答

45
如果你仍在寻找答案,那么很可能是你的AutoLayout视图没有约束或者约束不正确。你可以通过选择视图并进入Xcode菜单选项来解决这个问题:Editor -> 解决自动布局问题 -> 添加缺少的约束/重置建议的约束。你也可以选择整个布局并进行同样的操作,这会将你布局上的所有视图重置为建议的约束。如果需要进行自定义约束,则必须在Storyboard/XIB文件中设置自己的自动布局约束,或在代码中手动设置。如需了解更多关于自动布局的信息,请参阅苹果文档。最后,如果你想保持其原样,不进行自动调整(不建议),也可以关闭布局的自动布局。

enter image description here


1
这似乎是最合理的答案,尽管它并不适用于所有情况。 - Youssef Moawad
那对于不明确的布局呢? - gdm
在这种情况下,请尝试重置为建议的约束条件。这意味着您的某些约束条件存在冲突或不够具体。 - Joel Fischer

15

重置为建议的约束有时无法消除此警告。 解决方法是在相关UIView的尺寸检查器中的内在大小下拉菜单中选择占位符,然后根据需要添加缺失的约束。


在NSTableView中,它由滚动视图和剪辑视图组成,然后是表格视图。一旦我在滚动视图中启用了“占位符”大小(尽管剪辑视图发出警告消息),我就关闭了警告消息。 - morph85

3

只需选择您的视图控制器,然后转到

编辑-->解决自动布局问题-->在视图控制器中清除所有约束即可完成。


2

保密协议已经解除了吗? :) - Victor Engel
@VictorEngel 嗯嗯嗯... 是的,实际上如果你还没有注意到的话! - Youssef Moawad
2
哎呀,我忘记标明我的讽刺意味了。 :) (实际上,这就是这个笑脸符号的作用) - Victor Engel

0

我在视图控制器中添加的两个文本字段中也遇到了同样的错误。帮助我解决问题的步骤是: 在文档大纲中,我使用 Ctr+拖动 将第一个文本字段拖动到视图上,并选择水平居中于容器。然后我将第二个文本字段 Ctr+拖动 到视图上,并选择垂直居中于容器。 希望这对你也有所帮助。


0

Xcode现在可以相对于父视图进行定位。您可以通过单击橙色线条并单击标记来更正它们,然后选择使用故事板值或其他选项。


0

或者,您可以完全关闭自动布局。

如果您想与iOS 5兼容,这种方法非常方便。


考虑到超过75%的iOS设备运行iOS 7,我非常怀疑有人会选择与旧版本的iOS兼容。 - Youssef Moawad
1
我喜欢我的iPad 1观众;-) - Jay Versluis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接