ios Web視圖之WKWebView

圖片.png
/**
 WKWebView Demo
 */
- (void) wkWebViewDemo{
    CGRect screen = [[UIScreen mainScreen] bounds];
    
    //按鈕欄
    CGFloat buttonBarWidth = 316;
    UIView *buttonBar = [[UIView alloc] initWithFrame:CGRectMake((screen.size.width - buttonBarWidth)/2, 20, buttonBarWidth, 100)];
    buttonBar.backgroundColor = [UIColor orangeColor];
    [self.view addSubview:buttonBar];
    
    //添加LoadHTMLString按鈕
    UIButton *buttonLoadHTMLString = [UIButton buttonWithType:UIButtonTypeSystem];
    [buttonLoadHTMLString setTitle:@"Load\nHTML\nString" forState:UIControlStateNormal];
    buttonLoadHTMLString.titleLabel.numberOfLines = 3;
//    buttonLoadHTMLString.backgroundColor = [UIColor grayColor];
//    buttonLoadHTMLString.clipsToBounds = YES;
//    buttonLoadHTMLString.layer.cornerRadius = 30;
    buttonLoadHTMLString.frame = CGRectMake(0, 20, 117, 60);
    [buttonLoadHTMLString addTarget:self action:@selector(testLoadHTMLString:) forControlEvents:UIControlEventTouchUpInside];
    [buttonBar addSubview:buttonLoadHTMLString];
    
    //添加LoadData按鈕
    UIButton *buttonLoadData = [UIButton buttonWithType:UIButtonTypeSystem];
    [buttonLoadData setTitle:@"Load\nData" forState:UIControlStateNormal];
    buttonLoadData.titleLabel.numberOfLines = 2;
    buttonLoadData.frame = CGRectMake(137, 20, 67, 60);
    [buttonLoadData addTarget:self action:@selector(testLoadData:) forControlEvents:UIControlEventTouchUpInside];
    [buttonBar addSubview:buttonLoadData];

    //添加LoadRequest按鈕
    UIButton *buttonLoadRequest = [UIButton buttonWithType:UIButtonTypeSystem];
    [buttonLoadRequest setTitle:@"Load\nRequest" forState:UIControlStateNormal];
    buttonLoadRequest.titleLabel.numberOfLines = 2;
    buttonLoadRequest.frame = CGRectMake(224, 20, 92, 60);
    [buttonLoadRequest addTarget:self action:@selector(testLoadRequest:) forControlEvents:UIControlEventTouchUpInside];
    [buttonBar addSubview:buttonLoadRequest];
    
    //添加WKWebView
    self.webView = [[WKWebView alloc] initWithFrame:CGRectMake(0, 130, screen.size.width, screen.size.height-150)];
//    self.webView.backgroundColor = [UIColor greenColor];
    [self.view addSubview:self.webView];
    
}

- (void)testLoadHTMLString:(id)sender{
    NSLog(@"%s", __func__);
    NSString *htmlPath = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"];
    NSURL *bundleUrl = [NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]];
    NSError *error = nil;
    
    NSString *html = [[NSString alloc] initWithContentsOfFile:htmlPath encoding:NSUTF8StringEncoding error:&error];
    if (error == nil) {
        [self.webView loadHTMLString:html baseURL:bundleUrl];
    }else{
        NSLog(@"加載失敗 error: %@", error.description);
    }
}
- (void)testLoadData:(id)sender{
    NSLog(@"%s", __func__);
    NSString *htmlPath = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"];
    NSURL *bundleUrl = [NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]];
    NSData *htmlData = [[NSData alloc]  initWithContentsOfFile: htmlPath];
    
    [self.webView loadData:htmlData MIMEType:@"text/html" characterEncodingName:@"UTF-8" baseURL:bundleUrl];
}
- (void)testLoadRequest:(id)sender{
    NSLog(@"%s", __func__);
    NSURL * url = [NSURL URLWithString: @"https://guides.cocoapods.org"];
    NSURLRequest * request = [NSURLRequest requestWithURL:url];
    [self.webView loadRequest:request];
    self.webView.navigationDelegate = self;
     NSLog(@"%s", __func__);
    

}

PS:記得@interface ViewController ()<WKNavigationDelegate>

#pragma mark - WKNavigationDelegate
//開(kāi)始加載時(shí)調(diào)用
- (void)webView:(WKWebView *)webView didStartProvisionalNavigation:(WKNavigation *)navigation{
    NSLog(@"開(kāi)始加載");
}

//內(nèi)容開(kāi)始返回時(shí)調(diào)用
- (void)webView:(WKWebView *)webView didCommitNavigation:(WKNavigation *)navigation{
    NSLog(@"內(nèi)容開(kāi)始返回");
}

//加載完成之后調(diào)用
- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation{
    NSLog(@"加載完成");
}

//加載失敗時(shí)調(diào)用
- (void)webView:(WKWebView *)webView didFailNavigation:(WKNavigation *)navigation withError:(NSError *)error{
    NSLog(@"加載失敗 error: %@", error.description);
}

上述代碼中使用的index.html,自己隨便寫(xiě)個(gè),也可以從網(wǎng)絡(luò)上載一個(gè)網(wǎng)頁(yè)。還是不過(guò)貼上一段簡(jiǎn)單的

<HEAD>
<meta name="viewport" content="width=device-width" />
<meta http-equiv="content-type" content="text/html;charset=UTF-8" />
</HEAD>
<BODY>
網(wǎng)頁(yè)內(nèi)容
</BODY>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容