20
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Swift 2.0でWKWebViewを使ってみた

Last updated at Posted at 2015-12-10

WKWebViewを使った理由

ロジックで作成したHTML文字列をそのまま表示したかった。
UIWebViewだと一時ファイルを作成して、そのファイルを読み込む必要があったため。

WKWebViewの特徴

  • Storyboardから設定できない
  • コード上で定義してaddSubViewする必要あり
  • AutoLayoutもコード上から定義する必要あり

やりたき事

  • 画面いっぱいにWKWebViewを表示
  • 上記を実現する制約を追加

実装

Webのいろんな情報を参考にしてこんな実装になりました。
やりたい事がまとまった情報があまりなかった。
(WKWebViewはiOS 8以降対応のため、まだそれほど使われていない?)

  private var webView: WKWebView!

  required init?(coder aDecoder: NSCoder)
  {
    super.init(nibName: nil, bundle: nil)
    webView = WKWebView()
  }

  override func viewDidLoad()
  {
    super.viewDidLoad()
    setupSubViews()

    if let htmlString = htmlString {
      webView.loadHTMLString(htmlString, baseURL: nil)
    }
  }

  private func setupSubViews()
  {
    webView.navigationDelegate = self
    webView.scrollView.delegate = self
    webView.translatesAutoresizingMaskIntoConstraints = false
    view.addSubview(webView)
    var viewBindingsDict = [String: AnyObject]()
    viewBindingsDict["webView"] = webView
    view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|[webView]|", options: NSLayoutFormatOptions(rawValue: 0), metrics: nil, views: viewBindingsDict))
    view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|[webView]|", options: NSLayoutFormatOptions(rawValue: 0), metrics: nil, views: viewBindingsDict))
  }

ちなみに

このような実装でも良いようです。シンプルですね。
http://qiita.com/hanamiche/items/b0e576b7d3c87ca9cb99
より一部抜粋

    var _webkitview: WKWebView? 

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.

        //3.WebKitのインスタンス作成!
        self._webkitview = WKWebView()

        //4.ここでWebKitをviewに紐付け
        self.view = self._webkitview!

        //5.URL作って、表示させる!
        var url = NSURL(string:"http://www.yahoo.co.jp/")
        var req = NSURLRequest(URL:url)
        self._webkitview!.loadRequest(req)
    }

#その他参考情報

20
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?