Kri*_*nan 10 javascript ios wkwebview ios9 swift2
我一直在尝试将WKWebView集成为UIViewController中另一个webview的子视图.我已经能够加载内容并与swift和javascript正确通信.但是,没有任何数据操作的HTML内容的加载时间大约需要2秒.
我还测试了加载WKWebView只是一个空的HTML体,没有任何脚本加载.这仍然需要600毫秒才能加载.
viewDidLoad和webView(webView:WKWebView,didFinishNavigation导航:WKNavigation!)之间的差异时间是600毫秒,即使HTML包含空体.
ViewController的viewDidLoad函数
override func viewDidLoad() {
NSLog("started - %@.%@", String(self.dynamicType), __FUNCTION__)
super.viewDidLoad()
let wkConfiguration: WKWebViewConfiguration = WKWebViewConfiguration()
let userController: WKUserContentController = WKUserContentController()
wkConfiguration.userContentController = userController
wkConfiguration.processPool = VCWKWebView.wkProcess
self.wkWebView = VCWKWebView(frame: self.webView.bounds,configuration: wkConfiguration)
if let wkWebView = self.wkWebView {
self.webView.addSubview(wkWebView)
wkWebView.translatesAutoresizingMaskIntoConstraints = false
let height = NSLayoutConstraint(item: wkWebView, attribute: .Height, relatedBy: .Equal, toItem: self.webView, attribute: .Height, multiplier: 1, constant: 0)
let width = NSLayoutConstraint(item: wkWebView, attribute: .Width, relatedBy: .Equal, toItem: self.webView, attribute: .Width, multiplier: 1, constant: 0)
webView.addConstraints([height, width])
//wkWebView.delegate = self
wkWebView.navigationDelegate = self
wkWebView.loadContent()
}
NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardWillShow:", name: UIKeyboardWillShowNotification, object: nil)
NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardWillHide:", name: UIKeyboardWillHideNotification, object: nil)
NSLog("ended - %@.%@", String(self.dynamicType), __FUNCTION__)
}
Run Code Online (Sandbox Code Playgroud)
VCWKWebView类:
class VCWKWebView: WKWebView {
static let wkProcess: WKProcessPool = WKProcessPool()
private static let _url: NSURL = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("index", ofType: "html",inDirectory:"www")!)
private static let _accessUrl: NSURL = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("www", ofType: nil)!)
func loadContent(){
NSLog("started - %@.%@", String(self.dynamicType), __FUNCTION__)
if #available(iOS 9.0, *) {
self.loadFileURL(VCWKWebView._url, allowingReadAccessToURL: VCWKWebView._accessUrl)
} else {
// Fallback on earlier versions
}
NSLog("ended - %@.%@", String(self.dynamicType), __FUNCTION__)
}
override init(frame: CGRect, configuration: WKWebViewConfiguration) {
super.init(frame:frame, configuration:configuration)
}
convenience init(frame: CGRect){
let wkConfiguration: WKWebViewConfiguration = WKWebViewConfiguration()
self.init(frame:frame,configuration:wkConfiguration)
}
deinit{
print("deinit of VCWKWebView is called")
}
}
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮我集成WKWebView,以便内容加载更快?
小智 1
我认为有两种方法。
#1. 优化您的 HTML、CSS 和 JavaScript 代码。
#2. 您需要实现 WKWebView 委托函数。并且您需要在加载Webview内容后显示Webview内容。
| 归档时间: |
|
| 查看次数: |
2062 次 |
| 最近记录: |