【问题标题】:Xcode 5 layout errors - Misplaced View Frame for Label will be different at runtimeXcode 5 布局错误 - 标签的错位视图框架在运行时会有所不同
【发布时间】:2013-09-15 09:10:25
【问题描述】:

我刚刚安装了 Xcode 5,目前正在准备我的应用程序,以便下周在 iOS 7 上发布到 App Store。我收到一大堆错误和警告。

在一个应用程序中,我有一个 UIPickerView、UITextFields 和一堆 UILabel。在这个应用程序中,它在情节提要文件中的几乎所有控件上都会出现Illegal Configuration(红色)错误。我不知道那个错误是什么或如何解决它。我将不胜感激。我无法完全重新创建文件,因为有 20 个复杂的视图。

在另一个应用程序中,有一个 UIScrollView 包含一堆 UILabel 和 UITextFields,以及一个以编程方式创建的 UITextView,它包含基于您在(上一个视图)UITableView 中选择的内容以及调整自身大小以适应内容的文本。 UIScrollView 调整大小以适应 UITextView 的新大小。这个编译和构建并且 UITextView 被创建但不包含文本,可能是因为它现在调整大小不正确。 UIScrollView 现在除了不应该垂直滚动之外,还可以水平滚动。这个只给出(黄色)警告,都说:

Misplaced View Frame for "Label - Symbol:" will be different at run time. 用于 4 个控件,包括此标签和另一个、文本字段和滚动视图。

我将不胜感激,因为这是我第一次适应新版本的 Xcode 和 iOS。

P.S:Illegal Configuration 错误的详细信息包括:
Auto Layout on iOS Versions prior to 6.0

谢谢!

【问题讨论】:

标签: ios objective-c xcode layout xcode5


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    如果您想与 iOS 5 兼容,这种方法会派上用场。

    【讨论】:

    • 考虑到超过 75% 以上的 iOS 设备运行 iOS 7,我非常怀疑是否有人会与旧版本的 iOS 兼容。
    • 我愿意 - 我喜欢我的 iPad 1 观众 ;-)
    【解决方案3】:

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

    Editor-->Resolve Autolayout issues--> Clear All Constraints in ViewController 就完成了。

    【讨论】:

      【解决方案4】:

      Reset to Suggested Constraints 有时无法消除此警告。解决方案是在相关 UIView 的大小检查器的 Intrinsic Size 下拉菜单中选择 Placeholder。然后根据需要添加缺少的约束。

      【讨论】:

      • 在 NSTableView 中,它由 Scroll View 和 Clip View 和 Table View 组成,一旦我在 Scroll View 中启用了“占位符”大小,我确实关闭了警告消息(尽管 Clip View 正在发出警告信息)。
      【解决方案5】:

      如果您仍在此处寻找答案,那么答案很可能是您的 AutoLayout 视图没有约束或约束不当。

      您可以通过选择视图并转到 Xcode 菜单选项来解决此问题:Editor -> Resolve Auto Layout Issues -> Add Missing Constraints / Reset to Suggested Constraints

      您也可以选择整个布局并执行相同的操作,这会将布局上的所有视图重置为推荐的约束。

      如果您需要自定义约束,则必须在 Storyboard/XIB 文件中或在代码中手动设置自己的自动布局约束。

      有关自动布局的更多信息,您可以查看Apple's documentation

      最后,如果你希望它按原样显示,你也可以关闭布局上的自动布局,而不是自动重新调整(不推荐这样做)。

      【讨论】:

      • 这似乎是最合理的答案,即使它并非在所有情况下都有效。
      • 对于模棱两可的布局?
      • 在这种情况下,请尝试重置为建议的约束。这意味着您的某些约束有冲突或不够具体。
      【解决方案6】:

      Xcode 现在可以处理父视图的相对位置。您可以更正它们以单击橙色线并单击标记并选择使用情节提要值或其他内容

      【讨论】:

        【解决方案7】:

        关于框架“标签框架在运行时会有所不同” -- 请参阅 Autolayout: Runtime 下的发行说明。

        https://developer.apple.com/library/prerelease/ios/releasenotes/DeveloperTools/RN-Xcode/index.html#//apple_ref/doc/uid/TP40001051

        NDA 解除后将在此处显示完整答案。

        注意:这也发生在 Xcode 4.2 下,但是 IB 没有发现问题。

        【讨论】:

        • NDA 已经解除了吗? :)
        • @VictorEngel emmmm... 是的,如果你还没有注意到的话!
        • 糟糕。我忘记了我的讽刺标记。 :)(实际上,这就是笑脸的用途)
        猜你喜欢
        • 1970-01-01
        • 2013-09-16
        • 1970-01-01
        • 1970-01-01
        • 2017-11-02
        • 2020-05-11
        • 1970-01-01
        • 1970-01-01
        • 2016-12-31
        相关资源
        最近更新 更多