【问题标题】:Autolayout warning in Mac OS XMac OS X 中的自动布局警告
【发布时间】:2012-03-31 18:35:57
【问题描述】:

每次运行我的应用程序时,我都会收到一条我不完全理解的警告:

Layout still needs update after calling -[WebHTMLView layout]. WebHTMLView or one of its superclasses may have overridden -layout without calling super. Or, something may have dirtied layout in the middle of updating it. Both are programming errors in Cocoa Autolayout. The former is pretty likely to arise if some pre-Cocoa Autolayout class had a method called layout, but it should be fixed.

(我已经看到了这个related question,但提供的答案解决了一些其他问题,因此我的问题。)一旦我向我的应用程序添加网络视图,就会出现警告。这是什么意思,我应该如何解决这个问题?

【问题讨论】:

    标签: macos cocoa webview autolayout


    【解决方案1】:

    看来- (void)layout 是在WebHTMLView 中实现的。 WebKit 的源代码可在 Apple 的开源页面上查看。

    http://www.opensource.apple.com/source/WebKit/WebKit-7534.53.11/mac/WebView/WebHTMLView.mm

    在 Auto Layout 文档中,它指出如果在使用 Auto Layout 时需要自定义逻辑来布局子视图,则只需要实现“布局”。它继续说您应该始终在自定义实现中调用[super layout]WebHTMLView 不会发生这种情况。

    https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSView_Class/Reference/NSView.html%23//apple_ref/occ/instm/NSView/layout

    对于您的项目,可能可以安全地忽略此消息。我在一个空白的新项目上也会发生同样的事情。

    【讨论】:

    • 有雷达项目吗?
    • 我在拖动项目时通过一个简单的 NSTableView 得到了它。我还没有实现任何布局方法。所以这听起来像是 Apple 的 Swifty Cocoa 实现中的一个错误。雷达?我猜不会。我仍然有超过半打的开放编译器错误报告甚至没有被 Apple 触及 :-(
    【解决方案2】:

    除了注意到NSTableView 与拖动我发现如果你打开NSFontManager 这将始终显示此消息。不仅可以使用 Swift,还可以使用 Apple 自己的演示程序 CoreTextArcCocoa。因此,这绝对是 Apple 内部的一些漏洞。

    【讨论】:

    • To:Thomas,也许它来自 NSFontPanel 而不是 NSFontManager。
    • @JiulongZhao 没错,就是从编辑菜单中弹出的字体面板。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多