UIWebView - 網(wǎng)頁

關(guān)于更多網(wǎng)頁加載:WKWebKit,Safari,SafariViewController
這里只講UIWebView,使用簡單,性能一般差。

下面的分開講。
WKWebView:iOS8 新框架:WebKit
SafariViewController:iOS9新框架:SafariServices

還有就是直接調(diào)用 Safari:

    NSURL *url = [NSURL URLWithString:@"https://www.baidu.com"];
    [[UIApplication sharedApplication] openURL:url];

加載數(shù)據(jù)

  • 1 url 加載
    NSURL* url = [NSURL URLWithString:@"http://www.baidu.com"];//創(chuàng)建URL
    NSURLRequest* request = [NSURLRequest requestWithURL:url];//創(chuàng)建NSURLRequest
    [webView loadRequest:request];//加載
    
  • 2 根據(jù)本地html 文本加載
    [webView loadHTMLString:@"htmlString" baseURL:nil];
 
  • 3 加載本地數(shù)據(jù) NSData
// 可以加載 pdf,gif,docx  txt等
   NSString *path = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"pdf"];
    [webView loadData:[NSData dataWithContentsOfFile:path] MIMEType:@"application/pdf" textEncodingName:@"utf-8" baseURL:[NSURL URLWithString:@""]];

    // 更多 MIMEType
    // http://tool.oschina.net/commons?type=22013-05-17

一些屬性設(shè)置

// 內(nèi)容顯示范圍設(shè)置
 [webView.scrollView setContentInset:UIEdgeInsetsMake(10, 100, 10, 100)];
    
    webView.scalesPageToFit = YES;// 是否允許縮放?
    webView.dataDetectorTypes = UIDataDetectorTypeAll;  // 自動識別 網(wǎng)址,電話等
    webView.allowsInlineMediaPlayback = YES; // 支持h5 播放
    webView.mediaPlaybackRequiresUserAction = YES;// h5 播放控制
    webView.mediaPlaybackAllowsAirPlay = YES;// 。。。
    webView.suppressesIncrementalRendering = YES;// webView 一次性加載,沒讀取完成就不加載
    webView.keyboardDisplayRequiresUserAction = YES;// 允許使用鍵盤
    
    webView.paginationMode = UIWebPaginationModeUnpaginated;
    /*
     typedef NS_ENUM(NSInteger, UIWebPaginationMode) {
     UIWebPaginationModeUnpaginated,
     UIWebPaginationModeLeftToRight,
     UIWebPaginationModeTopToBottom,
     UIWebPaginationModeBottomToTop,
     UIWebPaginationModeRightToLeft
     };翻頁模式
     */
    
    webView.paginationBreakingMode = UIWebPaginationBreakingModeColumn;
    /*
     typedef NS_ENUM(NSInteger, UIWebPaginationBreakingMode) {
     UIWebPaginationBreakingModePage,
     UIWebPaginationBreakingModeColumn
     };分頁模式
     */
    
    
    // 判斷
    if (webView.canGoBack) {
        NSLog(@"goback");
    }
    if (webView.canGoForward) {
        NSLog(@"goforward");
    }
    if (webView.loading) {
        NSLog(@"loading");
    }
    
    // 事件 操作
    //    [webView stopLoading];
    //    [webView reload];
    //    [webView goBack];
    //    [webView goForward];
    
    // iOS 9 的屬性
    webView.allowsPictureInPictureMediaPlayback = YES;// 畫中畫
    webView.allowsLinkPreview = YES;// 3d touch 預(yù)覽 相關(guān)

代理

// 判斷,是否允許加載
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {

    /*
     typedef NS_ENUM(NSInteger, UIWebViewNavigationType) {
     UIWebViewNavigationTypeLinkClicked,
     UIWebViewNavigationTypeFormSubmitted,
     UIWebViewNavigationTypeBackForward,
     UIWebViewNavigationTypeReload,
     UIWebViewNavigationTypeFormResubmitted,
     UIWebViewNavigationTypeOther
     };
     */
    
    if(navigationType == UIWebViewNavigationTypeLinkClicked) {
        //判斷是否是點(diǎn)擊鏈接
        return NO;
    } else {
        return YES;
    }
}

- (void)webViewDidStartLoad:(UIWebView *)webView {
    NSLog(@"start");
}

- (void)webViewDidFinishLoad:(UIWebView *)webView {
    NSLog(@"finish");
    
    // 也是一些屬性內(nèi)容
    NSLog(@"%f",webView.pageLength);
    NSLog(@"%f",webView.gapBetweenPages);
    NSLog(@"%zi",webView.pageCount);
    NSLog(@"%@",webView.request);
    
    [webView stringByEvaluatingJavaScriptFromString:@""];// 使用js 代碼執(zhí)行操作
    
}

- (void)webView:(UIWebView *)webView didFailLoadWithError:(nullable NSError *)error {
    NSLog(@"error");
}

1

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

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