Created
March 27, 2019 09:30
-
-
Save devmjun/43f7c32cf2152159c588c83e6afc038b to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/ | |
// ViewController.swift | |
// WebView-Optimization | |
// | |
// Created by Kent Winder on 06/01/2018. | |
// | |
import UIKit | |
import WebKit | |
class ViewController: UIViewController { | |
var webView: WKWebView! | |
var popupWebView: WKWebView? | |
var urlPath: String = "https://facebook-login-demo-71f0c.firebaseapp.com" | |
open override func viewDidLoad() { | |
super.viewDidLoad() | |
setupWebView() | |
loadWebView() | |
} | |
func setupWebView() { | |
let preferences = WKPreferences() | |
preferences.javaScriptEnabled = true | |
preferences.javaScriptCanOpenWindowsAutomatically = true | |
let configuration = WKWebViewConfiguration() | |
configuration.preferences = preferences | |
webView = WKWebView(frame: view.bounds, configuration: configuration) | |
webView.autoresizingMask = [.flexibleWidth, .flexibleHeight] | |
webView.uiDelegate = self | |
webView.navigationDelegate = self | |
view.addSubview(webView) | |
} | |
func loadWebView() { | |
if let url = URL(string: urlPath) { | |
let urlRequest = URLRequest(url: url) | |
webView.load(urlRequest) | |
} | |
} | |
} | |
extension ViewController: WKUIDelegate { | |
func webView(_ webView: WKWebView, createWebViewWith configuration: WKWebViewConfiguration, for navigationAction: WKNavigationAction, windowFeatures: WKWindowFeatures) -> WKWebView? { | |
popupWebView = WKWebView(frame: view.bounds, configuration: configuration) | |
popupWebView!.autoresizingMask = [.flexibleWidth, .flexibleHeight] | |
popupWebView!.navigationDelegate = self | |
popupWebView!.uiDelegate = self | |
view.addSubview(popupWebView!) | |
return popupWebView! | |
} | |
func webViewDidClose(_ webView: WKWebView) { | |
if webView == popupWebView { | |
popupWebView?.removeFromSuperview() | |
popupWebView = nil | |
} | |
} | |
} | |
extension ViewController: WKNavigationDelegate { | |
open func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) { | |
UIApplication.shared.isNetworkActivityIndicatorVisible = true | |
} | |
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) { | |
UIApplication.shared.isNetworkActivityIndicatorVisible = false | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment