OC之UIWebView

SONG / 文 发表于2018-02-01 14:50 次阅读 uiwebview

一、权限申请 IOS9+需要在info.plist中加入权限:

<key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
    </dict>

二、初始化

UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 20, self.view.bounds.size.width, self.view.bounds.size.height-20)];

    // 加载网络地址
[webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.baidu.com"]]];

    // 适配屏幕
webView.scalesPageToFit = YES;
    // 将 webView 添加到屏幕
[self.view addSubview:webView];

三、加载指定内容

// 加载指定 URL 所设定的内容
    /*
        异步加载,可以从服务器和本地读取
    */

        // 加载网络数据
[webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.baidu.com"]]];

        // 加载本地文件
[webView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"Baidu" ofType:@"pdf"]]]];

// 加载 HTML 字符串数据
    /*
        指定 baseURL 可加载图片
    */

        // 加载网络 HTML 字符串数据
NSString *htmlString1 = [NSString stringWithContentsOfURL:[NSURL URLWithString:@"https://m.baidu.com/"] encoding:NSUTF8StringEncoding error:NULL];
[webView loadHTMLString:htmlString1 baseURL:[NSURL URLWithString:@"https://m.baidu.com/"]];

        // 加载本地 HTML 字符串数据
NSString *htmlString2 = [NSString stringWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"Baidu" ofType:@"html"] encoding:NSUTF8StringEncoding error:NULL];
[webView loadHTMLString:htmlString2 baseURL:nil];

// 加载 Data 数据
    /*
        比 loadHTMLString 更底层
    */
NSData *data = [NSData dataWithContentsOfURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"Baidu" ofType:@"html"]]];

[webView loadData:data MIMEType:@"text/html" textEncodingName:@"utf-8" baseURL:[NSURL URLWithString:@"https://m.baidu.com/"]];

四、设置自动分页

    // 默认不分页
    UIWebPaginationModeUnpaginated,

    UIWebPaginationModeLeftToRight,

    UIWebPaginationModeTopToBottom,

    UIWebPaginationModeBottomToTop,

    UIWebPaginationModeRightToLeft
webView.paginationMode = UIWebPaginationModeLeftToRight;

五、设置超链接类型

    UIDataDetectorTypePhoneNumber     = 1 << 0
    UIDataDetectorTypeLink            = 1 << 1
    UIDataDetectorTypeAddress         = 1 << 2
    UIDataDetectorTypeCalendarEvent   = 1 << 3
    UIDataDetectorTypeNone =0
    UIDataDetectorTypeAll =NSUIntegerMax
webView.dataDetectorTypes = UIDataDetectorTypeAll;

六、设置是否启动内置H5播放视频

  webView.allowsInlineMediaPlayback = NO;

七、设置是否需要用户触发来启动媒体播放

webView.mediaPlaybackRequiresUserAction = NO;

八、设置本页面是否可以 AirPlay 播放

webView.mediaPlaybackAllowsAirPlay = YES;

九、设置是否把网页内容全部加载到内存中再去渲染

 webView.suppressesIncrementalRendering = NO;

十、设置是否需要用户触发显示键盘

webView.keyboardDisplayRequiresUserAction = NO;

十一、操作设置

  // 刷新
    /*
        重新加载页面
    */
    [webView reload];

    // 停止加载
    /*
        加载过程中,强行停止加载
    */
    [webView stopLoading]; 

    // 返回至上一个链接
    /*
        在产生多个链接浏览时,可以返回至浏览历史的上一个链接
    */
    [webView goBack];

    // 前进至下一个链接
    /*
        在产生多个链接浏览时,可以前进至浏览历史的下一个链接
    */
    [webView goForward];

十二、协议

   // 将要开始加载网页
    - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {

        return YES;
    }

    // 开始加载网页
    - (void)webViewDidStartLoad:(UIWebView *)webView {

    }

    // 加载网页完成
    - (void)webViewDidFinishLoad:(UIWebView *)webView {

    }

    // 加载网页失败
    - (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error {

    }
收藏 赞 (0) 踩 (0)