Programmatisch WKwebView innerhalb einer UIView mit auto-layout
Dies ist wohl etwas einfach für einige Experten, so. die Sache ist, theres keine WKWebView in Xcode visual interface für das storyboard verwenden, im Gegensatz zu UIWebview, so hat es, um programmgesteuert erstellt werden . im mit einem nav-controller für mein ganzes app.
Erstellte ich einen BLICK in den story-board und verwendet auto-layout, um die Einschränkung 0,0,0,0. so möchte hinzufügen, dass die WKWebView in die Ansicht "Daview". wie eine Untersicht und füllen Sie es vollständig aus . ich kann nicht scheinen, um es herauszufinden.
Bitte werfen Sie einen Blick auf den code Unten
class ViewController2: UIViewController ,WKNavigationDelegate {
@IBOutlet weak var navigation: UINavigationItem!
@IBOutlet var daview: UIView!
var restWeb: WKWebView?
@IBOutlet var BottomView: UIView!
//var ActivityIndicator = UIActivityIndicatorView()
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(true)
println(" daview bounds in VIEWDIDAPPEAR is \(self.daview.bounds) y Frame \(self.daview.frame)")
restWeb!.bounds = daview.bounds
}
override func viewDidLoad() {
super.viewDidLoad()
/* Create our preferences on how the web page should be loaded */
let preferences = WKPreferences()
preferences.javaScriptEnabled = true
/* Create a configuration for our preferences */
let configuration = WKWebViewConfiguration()
configuration.preferences = preferences
/* Now instantiate the web view */
restWeb = WKWebView(frame: self.daview.bounds, configuration: configuration)
let urlString = "http://www.google.com"
println("EL DETAIL URL es \(urlString)")
if let theWebView = restWeb {
println("Existe restWeb")
let urlRest = NSURL(string:urlString)
let requestRest = NSURLRequest(URL: urlRest!)
theWebView.loadRequest(requestRest)
theWebView.allowsBackForwardNavigationGestures = true
theWebView.navigationDelegate = self
self.daview.addSubview(theWebView)
}
} //finish viewdidload
Habe es durch die Hilfe von Kakao-init-irc auf freenode.. Antwort.. Deaktivieren : Passen Sie die scroll-view-Einsätze
InformationsquelleAutor lorenzo gonzalez | 2015-08-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einer Zeile Antwort: Verschieben Sie den code aus viewDidLoad() viewDidAppear()
Erklärung: ich bin kein Experte, aber ich habe vor dieses problem in meinen frühen Tagen.
Das problem mit dem webview ist, dass Sie versuchen, die Grenzen in viewDidLoad()
Aber, das autolayout ist nur abgeschlossen werden, wenn die Anzeige erschienen ist. Bedeutet, die Grenzen der (selbst -.daview.Grenzen), die Sie zu benutzen versuchen, in viewDidLoad, geben Sie einen Wert auch vor dem anzeigen-layout eingestellt ist.
Lösung: Die richtige auto-layout-Grenzen sind in und nach viewDidAppear. Wenn Sie bewegen Sie Ihren code
aus viewDidLoad() viewDidAppear(), dann werden alle Ihre Wünsche wahr werden.
Dies funktioniert, obwohl es ist nicht Auto-Layout". Sie sollten in der Lage sein, alles bis in
viewDidLoad
und fügen Sie Einschränkungen, und die Nebenbedingungen angepasst werden, wenn alle Elemente in der Ansicht, in den Blick kommen.InformationsquelleAutor Nishant
Erstellen Sie eine Methode, in dem Sie die setup 4 autolayout-constraints programmatisch:
Rufen Sie diese Methode in der viewDidAppear:
InformationsquelleAutor Roland T.
Verwenden WKWebView mit autolayout erstellen UIView in xib/storyboard-editor, ändert sich die Klasse zu WKWebView. Hinzufügen autolayout constrints.
In der viewDidLoad-Methode manuell entfernen flag translatesAutoresizingMaskIntoConstraints
und wie Sie init WKWebView mit WKWebViewConfiguration?
Danke. Richtige Antwort. Angenommen, die Antwort war falsch, weil die Einstellung von frame ist unnötig, während Sie "auto-layout".
Ich habe update-code für Ihr Vergnügen
InformationsquelleAutor poGUIst
Einen anderen Ansatz gibt Ihnen die Fähigkeit, verwenden Sie auto-layout bei der IB für eine WKWebView, ziehen Sie eine Sammlung Einblick in Ihre ViewController. Dann erstellen Sie eine swift-Datei für die UIViewController ist, dass im Zusammenhang mit der Sammlung Anzuzeigen. Setzen Sie alle Ihre WKWebView-code in diesem UIViewController. Verwenden Sie auto-layout, um die Sammlung anzuzeigen, überall, das Sie brauchen, um in der UIViewController mit.
InformationsquelleAutor D. Rothschild