Страница WKWebView идет под прозрачной строкой состояния - PullRequest
0 голосов
/ 05 июля 2018

Я хочу создать приложение ios, которое просто загружает мой веб-сайт, который является мобильным. У меня есть следующий код:

import UIKit
import WebKit

class ViewController: UIViewController, WKUIDelegate {
    var webView: WKWebView!

    override func loadView() {
        let webConfiguration = WKWebViewConfiguration()
        webView = WKWebView(frame: .zero, configuration: webConfiguration)
        webView.scrollView.isScrollEnabled = true
        webView.scrollView.bounces = false
        webView.uiDelegate = self

        view = webView
    }
    override func viewDidLoad() {
        super.viewDidLoad()

        let myURL = URL(string: "https://google.com")
        let myRequest = URLRequest(url: myURL!)
        webView.load(myRequest)
    }
}

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

Ответы [ 2 ]

0 голосов
/ 13 марта 2019

Я боролся с этим около часа подряд! Вот решение, красивое и простое (Xcode9).

  1. Создайте представление (оно останется пустым) и убедитесь, что это новое представление находится в вашем главном представлении, вы можете перетащить его под панель навигации.
  2. Снимите все ограничения, которые вы могли сделать ранее. Перетащите веб-видение так, чтобы оно также находилось в пределах основного вида, и убедитесь, что оно ПОД ЗНАКОМ нового созданного вами вида.
  3. Выберите новый вид и нажмите «Добавить новые ограничения», верхняя часть должна быть -20, левая 0, правая 0, не добавлять для нижней. Сделайте высоту 20 и нажмите «Добавить ограничения». ОТРИЦАТЕЛЬНЫЙ 20 для вершины очень важен.
  4. Выберите ваше веб-представление и добавьте ограничения следующим образом: сверху 0, слева 0, справа 0, снизу 0.

Ваше веб-представление теперь будет начинаться только через 20 точек после нового созданного вами представления, поэтому оно никогда не будет перекрываться.

Надеюсь, это поможет!

0 голосов
/ 06 июля 2018

В ViewController (здесь добавлено Webview) используйте только параметры автоматического изменения размера (в viewController-view, веб-представление добавляется программно позже при выполнении) в «Инспекторе размеров» без ограничений на использование:

enter image description here enter image description here

А мой код в viewcontroller Webview:

var webView2: UIWebView?
var hasConfiguredView = false
var screenSize = CGRect.zero
override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view.
    screenSize = UIScreen.main.bounds
    webView.frame.origin.x = 0
    webView.frame.origin.y = 0
    webView.frame.size.height = screenSize.height
    webView.frame.size.width = screenSize.width
}

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()
    if !hasConfiguredView {
        hasConfiguredView = true
        drawenormalwebview()
    }
}

private func drawenormalwebview(){

    let urlstring = "https://google.com"

    webView2 = UIWebView.init()

    webView2!.frame.origin.x = 0
    webView2!.frame.origin.y = 0.f
    webView2!.frame.size.height = screenSize.height
    webView2!.frame.size.width = screenSize.width

    webView2!.delegate = self

    webView2!.scrollView.bounces = false

    self.view.addSubview(webView2!)
    webView2!.isOpaque = false
    webView2!.backgroundColor = UIColor.clear

    if let urls = URL(string: urlstring) {
        let myRequest = URLRequest(url: urls,
                                   cachePolicy: NSURLRequest.CachePolicy.reloadIgnoringLocalAndRemoteCacheData,
                                   timeoutInterval: 5.0)
        webView2!.loadRequest(myRequest)
    }


}

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...