Làm việc với WebView sử dụng WKWebView phần 1
Hướng dẫn cách xây dựng Webview với WKWebView
Sử dụng web view không còn là gì mới mẽ cả, nhiều năm trước đây chúng ta có thể sử dụng UIWebView một cách rất đơn giản . Nhưng đến với WKWebView trên IOS 8 , chúng ta có nhiều thứ khá hay ho để học.
Hôm nay mình sẽ hướng dẫn cách đơn giản để load một Webview từ Html và Url
Dưới đây là ảnh demo WebView mà chúng ta sẽ làm
Bước 1. Import Framework
Mở ViewController.swift và thêm dòng import WebKit vào bên dưới dòng import UIKit .
Bước 2. Khai báo
Khai báo Webview
var webView : WKWebView!
Bước 3. Khởi tạo Webview
Ở đây chúng ta sẽ override lại func loadView , và khởi tạo WebView ở tại đây
override func loadView\(\) {
webView = WKWebView\(\)
webView.uiDelegate = self
view = webView
}
Đến đây chắc sẽ có báo lỗi, cách fix đơn giản đó là bạn hãy thêm WKUIDelegate vào sau UIViewController
class ViewController : UIViewController, WKUIDelegate {
Bước 4.1 Load web từ URL
Đến đây thì có 2 cách để load một trang web.
Thứ nhất : Load từ link URL
Thứ hai : Load từ code HTML
Ở đây mình sẽ hướng dẫn theo cả 2 cách.
Bạn hãy thêm 3 dòng code bên dưới vào viewDidLoad.
let myURL = URL (string: " https://www.apple.com " )
let myRequest = URLRequest(url: myURL!)
webView.load(myRequest)
Hãy nhìn vào 3 dòng code trên, dòng đầu tiên là định nghĩa một URL từ string.Dòng kế tiếp là khởi tạo một URLRequest từ URL đã tạo trước đó, Sau đó thực hiện load Web từ URLRequest đó.
Bước 4.2 Load web từ HTML
Cách thứ 2 để load web từ webview đó chính là Load từ Local HTML, chúng ta sẽ sử dụng hàm loadHTMLString để thực hiện điều đó :
webView.loadHTMLString("<html><body>"
+ "<p><a href=\"http://samwize.com\">http://samwize.com</a></p>"
+ "</body></html>", baseURL: nil)
Đến đây các bạn đã có thể Run để xem trang web của mình đã được load lên WebView
Bước 5 Warning
Có một điều các bạn lưu ý là để đảm bảo tính bảo mật, thì WebKit này chỉ cho bạn load những link HTTPS , nghĩa là những link HTTP sẽ không thể load được. Vì vậy nếu muốn load được các link http chúng ta phải làm thêm những bước sau
- Mở info.list
Thêm App Transport Security Settings
i . Key : Allow Arbitrary Loads -- Value : Yes ii. Key : Exception Domains
Đến đây bạn có thể Run App và có thể xem WebView đã được load lên.
Dưới đây là source code :
import UIKit
import WebKit
class ViewController: UIViewController, WKUIDelegate{
var webView : WKWebView!
override func loadView(){
let webConfiguration = WKWebViewConfiguration()
webView = WKWebView(frame: .zero, configuration: webConfiguration)
webView.uiDelegate = self
view = webView
}
override func viewDidLoad(){
super.viewDidLoad()
let myURL = URL(string: "https://www.apple.com")
let myRequest = URLRequest(url: myURL!)
webView.load(myRequest)
}
}
Người viết : Nguyễn Khánh Hưng