WKWebView, introduced in iOS 8 and OS X Yosemite which replaces UIWebView in UIKit and WebView in AppKit UI, it is used to open Safari browser outside the app. It loads web pages faster and more efficiently.
 

 
So, in this blog we will learn how to Load an iFrame in WKWebView locally in an iOS App.
Let's see the code Example:
import UIKit
import WebKit
let bookData = BookData.sharedInstance
let quizData = QuizData.sharedInstance
class ViewController: UIViewController, WKUIDelegate {
    var webView: WKWebView! 
   override func loadView() {
// implementing web view and giving delegate
      let webViewConfiguration = WKWebViewConfiguration()
        webView = WKWebView(frame: .zero, configuration: webViewConfiguration)
        webView.uiDelegate = self
        view = webView
    }
    override func viewDidLoad() {
        super.viewDidLoad()
        // saving it in a local directory
        let htmlPath = URL(fileURLWithPath:
            Bundle.main.path(
                forResource: quizData.questions[quizData.curQuiz][quizData.curQuestion[quizData.curQuiz]].appendix,
                ofType: "html",
                inDirectory: "Bookshelf/Books/" + bookData.owned[bookData.bookSelected.ownedId].folder + bookData.owned[bookData.bookSelected.ownedId].version + "/quiz/appendix")!)
        webView.navigationDelegate = self
        webView.loadFileURL(htmlPath, allowingReadAccessTo: htmlPath) 
    }
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
}
extension ViewController: WKNavigationDelegate {
    // When page finishes loading then update ViewController title
    func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
        self.title = webView.title
    }
}
 
Above code will load an iFrame locally In WKWebView. For any question please feel free to write in comments below.
                       
                    
0 Comment(s)