1. 程式人生 > >iOS_WKWebView載入本地網頁

iOS_WKWebView載入本地網頁

@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;
}