SwiftでWebView(1)
題通り、SwiftでWebViewを表示させるという基本的なことをやってみました。
[環境]iOS SDK 9.0, Xcode7.0.1
いろんなWebView
Objective-CにてUIWebViewをちちくり回していた時代とは異なり、
- WKWebView
- SafariViewController
という二つのWebViewが用意されていました。
WKWebView
iOS8から導入のWebKitFrameWorkのクラス。
UIWebViewよりも高速な処理を実現できるWebViewだそうです。
参考: http://grandbig.github.io/blog/2014/09/23/wkwebview2/
SafariViewController
iOS9から追加された新たなクラス。 以下の点が今までのWebViewとは異なる。
・SafariのUIを使用できる
Safariのツールバーやプログレスバーを利用することができる。
・Safari の機能を使用できる
Safari AutoFill (クレジットカード、パスワード、連絡先の自動入力)
Safari Reader (サイトのテキストだけを抽出)
Content Blocking(コンテンツ制御 例:広告ブロック) など
・クッキーなどのデータをSafariと共有できる
WKWebViewでYahooを表示して見る
まずはじめにWKWebViewを使ってYahoo(http://www.yahoo.co.jp/)を表示してみた。
注意点は、iOS9より実装されたATS(App Transport Security)。
iOS9ではHTTPSでの通信が推奨されているため、
HTTP通信を行う際には、Info.plistにATSによる制限を回避するキーを含めてあげる必要があります。
Info.plist
<key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict>
ViewController
import UIKit import WebKit class ViewController: UIViewController, WKNavigationDelegate, WKUIDelegate { var _webView: WKWebView! override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. _webView = WKWebView(frame: self.view.bounds) _webView.navigationDelegate = self _webView.UIDelegate = self self.view.addSubview(_webView) } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } override func viewWillAppear(animated: Bool) { super.viewWillAppear(animated) let url = NSURL(string: "http://www.yahoo.co.jp/") let request = NSURLRequest(URL: url!) _webView.loadRequest(request) } }
ATSを知らなかったので、
たかだか、やほおも表示させられない腕の落ちっぷりに焦りました。
ブランクは怖いですね。