约束未将WKWebView保留在安全区域内

时间:2019-02-09 03:10:44

标签: ios xcode wkwebview nslayoutconstraint

请原谅我的无知。我是iOS开发和Xcode的新手。我尝试在此站点上搜索许多页面,但未找到任何直接解决我的问题的页面。您能提供的任何帮助将不胜感激!

我无法使我的Web视图(WKWebview)保持在安全区域范围之内(我认为这是描述它的最佳方式)。我在Web视图上设置了自动生成的约束,并且在Main.Storyboard编辑器中可以看到Web视图位于安全区域内。

不幸的是,Web视图忽略了这些边界,并涵盖了整个视图,并且我网页上的文本显示在屏幕顶部的时间,电池和连接图标后面。

我在做什么错了?

这是我的代码和几张图片:

import UIKit
import WebKit

class ViewController: UIViewController, WKUIDelegate {

    @IBOutlet var webView: WKWebView!

    override func loadView() {
        let webConfiguration = WKWebViewConfiguration()
        webView = WKWebView(frame: .zero, configuration: webConfiguration)
        webView.uiDelegate = self
        view = webView
    }
    override func viewDidLoad() {
        super.viewDidLoad()

        let url = Bundle.main.url(forResource: "bulk_material_table", withExtension: "html")!
        webView.loadFileURL(url, allowingReadAccessTo: url)
        let request = URLRequest(url: url)
        webView.load(request)

    }
}

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:2)

您的约束还可以。问题出在您覆盖的loadView()方法上。您无需创建新的WKWebView,因为您正在使用情节提要,而Interface Builder正在创建它。删除此方法,然后将uiDelegate移至viewDidLoad()

import UIKit 
import WebKit

class ViewController: UIViewController, WKUIDelegate {

    @IBOutlet var webView: WKWebView!

    override func viewDidLoad() {
        super.viewDidLoad()

        webView.uiDelegate = self // Move delegate here

        let url = Bundle.main.url(forResource: "bulk_material_table", withExtension: "html")!
        webView.loadFileURL(url, allowingReadAccessTo: url)
        let request = URLRequest(url: url)
        webView.load(request)
    }     
}