Versuchen, erstellen Sie eine iOS-WKWebView mit einer Größe kleiner als der Bildschirm programmgesteuert
Im-beginnend mit einer einfachen app, die zeigt nur eine web-Ansicht mit WKWebView.
Alles baut und funktioniert okay, außer dass es immer fullscreen. Im Idealfall würde es nicht reichen, die unter der iOS-Statusleiste oben. Es muss gesenkt werden, indem 20px unterhalb es. Ich suchte intensiv nach einer Lösung, aber nichts ändert die Größe. Nichts ist setup im InterfaceBuilder, ich mache alles programmgesteuert. Mit Swift.
Dieser scheint etwas grundlegendes, dass viele apps mit einer WKWebView tun würde. Es sollte einfach sein. Ich bin wahrscheinlich etwas fehlt offensichtlich. Jede Hilfe ist willkommen. Vielen Dank im Voraus.
Dies ist, was ich habe, so weit:
import UIKit
import WebKit
class ViewController: UIViewController, UIGestureRecognizerDelegate , UIWebViewDelegate, WKNavigationDelegate {
let url = NSURL(string:"http://stackoverflow.com")
var webView: WKWebView!
override func viewDidLoad() {
super.viewDidLoad()
webView = WKWebView(frame: CGRect( x: 0, y: 20, width: 380, height: 150 ), configuration: WKWebViewConfiguration() )
self.view = webView
self.view.frame = webView.frame
let req = NSURLRequest(URL:url!)
webView.loadRequest(req)
self.webView.allowsBackForwardNavigationGestures = true
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
//Dispose of any resources that can be recreated.
}
}
Vielen Dank Emilio!! Der eingestellte code funktioniert perfekt!
import UIKit
import WebKit
class ViewController: UIViewController, UIGestureRecognizerDelegate , UIWebViewDelegate, WKNavigationDelegate {
let url = NSURL(string:"http://stackoverflow.com")
var webView: WKWebView!
override func viewDidLoad() {
super.viewDidLoad()
webView = WKWebView(frame: CGRect( x: 0, y: 20, width: self.view.frame.width, height: self.view.frame.height - 20 ), configuration: WKWebViewConfiguration() )
self.view.addSubview(webView)
let req = NSURLRequest(URL:url!)
webView.loadRequest(req)
self.webView.allowsBackForwardNavigationGestures = true
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
//Dispose of any resources that can be recreated.
}
}
- Danke, es hat sich als nützlich erwiesen!!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dein problem ist, dass
UIViewControllers
präsentiert in gewisser Weise wird es gelingen, die Rahmen der anzeigen. Wenn Sie es Modal an, der als root-controller, oder in einer Navigationsleiste, zum Beispiel, die Einstellung der Ruhm manuell nicht eine Wirkung haben. (Das sind nur ein paar Beispiele).Wenn Sie möchten, verwalten Sie die Rahmen in der Ansicht, können Sie den
webView
als eine Untersicht auf Ihre view-controller istview
. Ändern Sie die frame wird dann Arbeit.Eine Sache möchte ich darauf hinweisen, dass der Aufruf
self.view.frame = webView.frame
nach dem Aufrufself.view = webView
redundant ist, weil Sie beide das gleiche Objekt, also das, was Sie tatsächlich tun, ist:Hät ich Platz machen für einige icon ' s und verbringen viel Zeit dies zu beheben. die Lösung wurde platzieren Sie die Einstellung in der viewDidAppear Funktion.