WebView控件是做網絡應用開發中使用最多的控件,直接在WebView内部指定一個網頁位址就可以通路網頁了,同時也可以實作UIWebViewDelegate協定實作相應的方法去控制内容的加載和處理。著名的PhoneGap開發的應用,其外殼重要的元件也是WebView控件。
在viewDidLoad方法内添加以下代碼就可以完成簡單的網頁
var webView = UIWebView(frame: CGRectMake(0, 0, 600, 600))
var url = NSURL(string: "http://www.imoneyfans.com")
webView.loadRequest(NSURLRequest(URL: url!))
self.view.addSubview(webView)
就像上面加載網頁時用到的loadRequest方法用于加載指定url對象所設定的網頁内容。方法loadHTMLString則用于加載指定的HTML代碼片斷。
var html = "<section><img src=\"http://img1.gtimg.com/12/1224/122455/12245555_980x1200_0.jpg\"</section>"
webView.loadHTMLString(html, baseURL: nil)
loadData也是用于加載指定内容,如将本地的一個html檔案轉成NSDATA對象後顯示在WebView上
var file = NSBundle.mainBundle().pathForResource("test", ofType: "html")
var url = NSURL.fileURLWithPath(file!)
var data = NSData(contentsOfURL: url!)
webView.loadData(data, MIMEType: "text/html", textEncodingName: "utf-8", baseURL: nil)

對于檢測網頁的内容是否是可互動的類型,如果點選網頁上一個Address可以調出Map,可以指定要探測的資料類型可選的值有連結(Link)、位址(Address)、電話号碼(PhoneNumber)等,也可以指定為All探測所有的類型,在預設狀态下電話号碼是可以點選的,以下是探測電話号碼
webView.dataDetectorTypes = UIDataDetectorTypes.PhoneNumber
還有很多方法,如
webview.reload()
webview.stopLoading()
webview.goBack()
webview.goForward()
如果要實作更進階的功能就要實作UIWebViewDeleage這個協定。