iOS9中的WebKit 与 Safari带来的惊喜

2020-01-14 17:39:06刘景俊
 的 javascript 数组对象:


var menus = $(".navbar a").map(function(n,i){
  return {
    title: $(n).text,
    link: $(n).attr("href")
  };
});

webkit.messageHandlers.didFetchMenus.postMessage(menus);

这里就略过接口实现,直接看 userContentController 方法实现:


var menus: [Menus]?

func userContentController(userContentController: WKUserContentController, didReceiveScriptMessage message: WKScriptMessage) {
  if message.name == "didFetchMenus" {
    if let resultArray = message.body as? [Dictionary<String,String>] {
      menus = resultArray.map{ Menu(dict: $0) }

      // 这里就取出并将JSON转换为 Swift 的Menu对象了
      print(menus)
    }
  }
}

iOS9 中的 Safair 浏览器

在 iOS9 中加入了 SafariServices 这个新的模块,其作用就是提供了一个全功能的内嵌式 Safair,通过
SFSafariViewController 就能像普通的 控制器那样使用。

以下是一个简单的例子


import UIKit
import SafariServices

class ViewController: UIViewController {
  @IBAction func openBrowser(sender: AnyObject) {
    let safari = SFSafariViewController(URL:NSURL(string:"http://www.easck.com/pre>
	
	

SFSafariViewController 和 WebKit 的最大区别是 SFSafariViewController 没有什么可控制方法,只是一个可以完全嵌入到 app 中的一个控制器,避免了像以前那样如果打开一个外部链接要跳出当前的app,而且 SFSafariViewController