iOS_WKWebView載入本地網頁
阿新 • • 發佈:2019-02-05
@property (strong, nonatomic) WKWebView *webView;
@property (nonatomic, copy) NSString *url;
WKWebView
載入工程內Html
頁面
// 我這裡是將html資原始檔放置在工程內一個bundle的資料夾內
NSString *path = [[[NSBundle mainBundle] pathForResource:@"H5Local" ofType:@"bundle"] stringByAppendingPathComponent:@"fund/index.html"];
// 拼接後的網頁路徑
self.url = [self componentFileUrlWithOriginFilePath:path Dictionary:@{@"key":@"value"}];
// 載入網頁
[self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:self.url]]];
WKWebView
載入沙盒內Html
頁面
// 將要載入的html路徑
NSString *urlStr1 = @"~/Cache/fund/index.html";
// 將要載入的html路徑的上一層級路徑
NSString *urlStr2 = @"~/Cache/fund";
self.url = [self componentFileUrlWithOriginFilePath:urlStr1 Dictionary:@{@"key":@"value"}];
[self.webView loadFileURL:[NSURL URLWithString:self.url] allowingReadAccessToURL:[NSURL fileURLWithPath:urlStr2]];
WKWebView
對載入的本地網頁進行後拼接引數- 無論是載入沙盒內網頁還是工程內網頁,如果需要在網頁後拼接引數,不能簡單的使用字串拼接的方式進行拼接,需要藉助
NSURLComponents
- 使用方法如下:
/**
本地網頁資料拼接
@param filePath 網頁路徑
@param dictionary 拼接的引數
@return 拼接後網頁路徑字串
*/
- (NSString *)componentFileUrlWithOriginFilePath:(NSString *)filePath Dictionary:(NSDictionary *)dictionary{
NSURL *url = [NSURL fileURLWithPath:filePath isDirectory:NO];
// NO代表此路徑沒有下一級,等同於[NSURL fileURLWithPath:filePath];
// 如果設定為YES,則路徑會自動新增一個“/”
NSURLComponents *urlComponents = [[NSURLComponents alloc]initWithURL:url resolvingAgainstBaseURL:NO];
NSMutableArray *mutArray = [NSMutableArray array];
for (NSString *key in dictionary.allKeys) {
NSURLQueryItem *item = [NSURLQueryItem queryItemWithName:key value:dictionary[key]];
[mutArray addObject:item];
}
[urlComponents setQueryItems:mutArray];
// urlComponents.URL 返回拼接後的(NSURL *)
// urlComponents.string 返回拼接後的(NSString *)
return urlComponents.string;
}