ios webview加载太慢_使用swift,WKWebView在iOS9中加载HTML内容的速度太慢

本文探讨了在iOS应用中使用Swift和WKWebView时遇到的加载速度问题。作者发现即使是最简单的HTML内容也需要约2秒才能加载,且在没有数据操作的情况下加载空HTML也需要600毫秒。作者分享了ViewController和VCWKWebView类的代码,并寻求解决方案以提高WKWebView的内容加载速度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我一直在尝试将WKWebView集成为UIViewController中另一个webview的子视图 . 我已经能够加载内容并与swift和javascript正确通信 . 但是,没有任何数据操作的HTML内容的加载时间大约需要2秒 .

我还测试了加载WKWebView只是一个空的HTML体,没有任何脚本加载 . 这仍然需要600毫秒才能加载 .

如果HTML包含空体,则 viewDidLoad 和 webView(webView: WKWebView, didFinishNavigation navigation: WKNavigation!) 之间的时间差为600毫秒 .

viewDidLoad function of the ViewController

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__)

}

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")

}

}

任何人都可以帮我集成WKWebView,以便内容加载更快?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值