Ограничения, не удерживающие WKWebView в безопасной зоне - PullRequest
0 голосов
/ 09 февраля 2019

Пожалуйста, извините за мое невежество.Я очень новичок в разработке iOS и Xcode.Я попытался найти много страниц на этом сайте и не нашел ни одной, которая бы напрямую решала мою проблему.Любая помощь, которую вы можете оказать, будет принята с благодарностью!

Мне не удается заставить мое веб-представление (WKWebview) оставаться в границах безопасной зоны (я думаю, что это лучший способ описать это).Я автоматически создал ограничения для веб-просмотра, и в редакторе Main.Storyboard я вижу, что веб-просмотр находится в безопасной зоне.

К сожалению, веб-просмотр игнорирует эти границы и охватывает весь вид, и текст на моей веб-странице отображается в верхней части экрана за значками времени, батареи и подключения.

Что я делаю не так?

Вот мой код и несколько картинок:

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 голосов
/ 09 февраля 2019

Ваши ограничения в порядке.Проблема в вашем переопределенном методе 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)
    }     
}
...