IOS WKWebview 使用集锦

IOS WKWebview 和JS交互

1、删除WKWebview的缓存

WKWebView有默认的缓存功能,即便H5做了更改,app上显示的依旧是老得页面。为了解决这一问题,我们就会用到WKWebView的删除缓存功能。

iOS9 WKWebView新方法:


NSSet *websiteDataTypes = [NSSet setWithArray:@[
                        WKWebsiteDataTypeDiskCache,
                        WKWebsiteDataTypeOfflineWebApplicationCache,
                        WKWebsiteDataTypeMemoryCache,
                        WKWebsiteDataTypeLocalStorage,
                        WKWebsiteDataTypeCookies,
                        WKWebsiteDataTypeSessionStorage,
                        WKWebsiteDataTypeIndexedDBDatabases,
                        WKWebsiteDataTypeWebSQLDatabases
                    ]];
//你可以选择性的删除一些你需要删除的文件 or 也可以直接全部删除所有缓存的type  
//NSSet *websiteDataTypes = [WKWebsiteDataStore allWebsiteDataTypes];
NSDate *dateFrom = [NSDate dateWithTimeIntervalSince1970:0];
[[WKWebsiteDataStore defaultDataStore] removeDataOfTypes:websiteDataTypes   
modifiedSince:dateFrom completionHandler:^{
       // �code
    }];

在IOS7和8中,

NSString *libraryDir = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory,   
NSUserDomainMask, YES)[0];
NSString *bundleId  =  [[[NSBundle mainBundle] infoDictionary]   
objectForKey:@"CFBundleIdentifier"];
NSString *webkitFolderInLib = [NSString stringWithFormat:@"%@/WebKit",libraryDir];
NSString *webKitFolderInCaches = [NSString   
stringWithFormat:@"%@/Caches/%@/WebKit",libraryDir,bundleId];
 NSString *webKitFolderInCachesfs = [NSString   
 stringWithFormat:@"%@/Caches/%@/fsCachedData",libraryDir,bundleId];

NSError *error;
/* iOS8.0 WebView Cache的存放路径 */
[[NSFileManager defaultManager] removeItemAtPath:webKitFolderInCaches error:&error];
[[NSFileManager defaultManager] removeItemAtPath:webkitFolderInLib error:nil];

/* iOS7.0 WebView Cache的存放路径 */
[[NSFileManager defaultManager] removeItemAtPath:webKitFolderInCachesfs error:&error];

只要做一次清空缓存即可。

2、获取WKWebview的内容高度

-(void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation{
    [_web_webView evaluateJavaScript:@"document.body.offsetHeight" completionHandler:^(id _Nullable result, NSError * _Nullable error) {
        //获取页面高度,并重置webview的frame
        double webViewHeight = [result doubleValue];
        CGRect frame = _web_webView.frame;
        frame.size.height = webViewHeight+15;
        _web_webView.frame = frame;
    }];
}

你可能感兴趣的:(IOS WKWebview 使用集锦)