首页 > 解决方案 > WKWebView macOS 问题

问题描述

我在 macOS 应用程序中遇到两个 WKWebView 问题。我正在英特尔 iMac 上的 macOS Big Sur 11.2.3 中使用 Xcode 12.4 构建它。

第一个问题是 iframe 上的滚动条。有没有办法删除那些?

第二个问题是如果视图窗口改变大小时 iframe 的自动调整大小。

这是我的代码:

import Cocoa
import WebKit

class ViewController: NSViewController {

    @IBOutlet weak var webView: WKWebView!
    
    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
        webView.configuration.preferences.setValue(true, forKey: "fullScreenEnabled")
        webView.configuration.preferences.setValue(true, forKey: "allowsInlineMediaPlayback")
        webView.allowsMagnification = true
        webView.autoresizingMask = [.width, .height]
        webView.pageZoom = 0.94
        self.view.addSubview(webView)
        webView.loadHTMLString("<iframe width=\"\(webView.frame.width)\" height=\"\(webView.frame.height)\" src=\"https://www.youtube.com/embed/ScMzIvxBSi4?&playsinline=1\" frameborder=\"0\" allowfullscreen></iframe>", baseURL: URL(string: "https://www.youtube.com"))
    }

    override var representedObject: Any? {
        didSet {
        // Update the view, if already loaded.
        }
    }

}

我找不到删除 iframe 滚动条的方法。我唯一的成功是将 pageZoom(如上)设置为 iframe 大小的 94%。我尝试通过 enclosureScrollView 删除滚动条,但它没有显示该视图的滚动条正在显示。看起来 iframe 有滚动条,因为当 pageZoom 减少到 94% 或更少时它们会消失。

对于第二个问题,我尝试使用 IB 设置约束,但这些似乎都没有帮助。在我看来,iframe 是控制大小而不是使用底层窗口调整大小的东西。

我怀疑我必须将 CSS 注入 iframe,因为我可以让 iframe 在浏览器窗口中自动调整大小,但我还没有弄清楚如何在 WKWebView 中做到这一点。

标签: swiftiframewkwebview

解决方案


推荐阅读