首页 > 解决方案 > 如何让 WKWebView 像 SFSafariViewController 一样全屏显示?

问题描述

我有一个包含 Web url 列表的 TableView。我想打开一个浏览器,导航到所选的 url,但具有一些自定义功能。当我使用 时SFSafariViewController,我得到全屏浏览器。但是,当我使用 时WKWebViewController,我会看到您向下滑动以关闭的模式。

如何获得WKWebView全屏显示,而不是像模态一样?

使用SFSafariViewController

class ShoppingViewController: UITableViewController {

    ...

    override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        showRetailerHome(indexPath: indexPath)
    }

    func showHome(indexPath: IndexPath){

        ...

        if let url = URL(string: urlString){
            let config = SFSafariViewController.Configuration()
            let vc = SFSafariViewController(url: url, configuration: config)
            present(vc, animated: true)
        }        
    }

结果:

在此处输入图像描述

使用WKWebViewController

class ShoppingViewController: UITableViewController {

    ...

    override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        showRetailerHome(indexPath: indexPath)
    }

    func showHome(indexPath: IndexPath){

        let customWebController = WKBrowserController()
        present(customWebController, animated: true)

    }

WKBrowserController:_

class WKBrowserController: UIViewController, WKNavigationDelegate {

    var webView: WKWebView!

    override func loadView() {
        webView = WKWebView()
        webView.navigationDelegate = self
        self.view = webView
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        let url = URL(string: "https://www.amazon.com")!
        webView.load(URLRequest(url: url))
        webView.allowsBackForwardNavigationGestures = true
    }
}

结果:

在此处输入图像描述

标签: swiftuikitwkwebviewsfsafariviewcontroller

解决方案


当您呈现全屏视图控制器时。您可以将其设置为 .fullscreen

尝试 :

let customWebController = WKBrowserController()
customWebController.modalPresentationStyle = .fullScreen
present(customWebController, animated: true)

推荐阅读