■はじめに
WKWebViewでHTMLを表示してみたので記録に残します。
■開発環境
・Xcode 10.1
・Swift 4.2.1
■サンプル
import UIKit
import WebKit
class ViewController: UIViewController {
var webView: WKWebView!
var loadString: String = "{ここにHTMLが入る}"
override func loadView() {
super.loadView()
self.createView()
}
override func viewDidLoad() {
super.viewDidLoad()
self.webView.uiDelegate = self
self.webView.loadHTMLString(loadString,baseURL: nil)
self.webView.allowsBackForwardNavigationGestures = true
let refreshControl = UIRefreshControl()
if #available(iOS 10.0, *) {
self.webView.scrollView.refreshControl = refreshControl
refreshControl.addTarget(self, action: #selector(ViewController.refreshWebView(sender:)), for: .valueChanged)
}
}
func createView() {
let rect = CGRect( x: 0, y: 0, width: self.view.frame.width,
height: self.view.frame.height)
let viewConfiguration = WKWebViewConfiguration()
self.webView = WKWebView(frame: rect, configuration: viewConfiguration)
view.addSubview(self.webView)
view.sendSubviewToBack(self.webView)
}
@objc func refreshWebView(sender: UIRefreshControl) {
self.webView.loadHTMLString(loadString,baseURL: nil)
sender.endRefreshing()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
extension ViewController: WKUIDelegate {
func webView(_ webView: WKWebView, createWebViewWith configuration: WKWebViewConfiguration,
for navigationAction: WKNavigationAction, windowFeatures: WKWindowFeatures) -> WKWebView? {
if navigationAction.targetFrame == nil {
webView.load(navigationAction.request)
}
return nil
}
}
■おわりに
サンプルにある画面遷移に関する実装やtarget=_blankが設定されたページも開けるようにする実装に関しては以前記事にしているので、関連リンクに記載に記載しておきます。
■関連リンク
・loadHTMLString(_:baseURL:) - WKWebView | Apple Developer Documentation
・【Swift】WKWebViewで進む/戻る/更新(リロード)機能を実装する - Swift実践ブログ
・【Swift】WKWebViewでリンク先が開けない場合の対処法(ATS/target=”_blank”) - Swift実践ブログ