gpt4 book ai didi

ios - WKWebViewcontent 的顶部在 Mac Catalyst 的 NSToolbar 下被剪辑

转载 作者:行者123 更新时间:2023-12-01 19:34:10 26 4
gpt4 key购买 nike

我有一个催化剂应用程序,它在 UINavigationController 中有一个 WKWebView。在 iOS 上,我在 Web View 上方有一个导航栏,如下所示:
[Image]

但是,在 macOS 上,我隐藏了导航栏,而是显示了一个 NSToolbar。但是,WebView 的内容被剪裁在 Toolbar 下方:
[Image]

(注意向下滚动网页 View 后,内容不再被剪裁)

如何设置 WKWebView 以使内容不被剪切到工具栏下方?

最佳答案

在我的 Catalyst 应用程序中玩了一个 AppKit 桥之后,我确定了问题的原因:styleMask催化剂窗口包含 .fullSizeContentView ,用于在 NSWindow 中创建 View 在标题栏/工具栏下扩展(这是在 Safari 等应用程序中启用半透明工具栏的原因)。无论出于何种原因,WKWebView没有正确处理它,这就是导致内容被剪辑的原因。

作为一种解决方法,我为 NSWindow.didBecomeMainNotification 添加了一个观察者。在应用程序首次启动时运行的 AppKit 包中的一个方法中(对于我的用例,我只担心主窗口)。因此,当窗口成为应用程序的“主”窗口时,会调用以下方法:

    @objc func setWindow(_ sender: Notification) {
if let w = sender.object as? NSWindow {
if w.styleMask.contains(.fullSizeContentView){
var sm = w.styleMask
sm.remove(.fullSizeContentView)
w.styleMask = sm
}
}
}

这将删除 .fullSizeContentView从窗口的 styleMask ,因此, WKWebView的内容在首次出现时不再被剪辑。

我应该注意,解决方法并不完美 - 您将不再有工具栏下的半透明效果。

如果您想将 AppKit Bundle 添加到 Catalyst 应用程序,以下资源应该会有所帮助

https://crunchybagel.com/disabling-the-mac-zoom-maximise-button-in-catalyst/
https://www.highcaffeinecontent.com/blog/20190607-Beyond-the-Checkbox-with-Catalyst-and-AppKit

如果您仍然感到困惑,我建议您使用我找到的下面的演示项目:
https://github.com/noahsark769/CatalystPlayground

关于ios - WKWebViewcontent 的顶部在 Mac Catalyst 的 NSToolbar 下被剪辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60728083/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com