iOS的心路里程

iOS控件--UIWebView--网页显示控件

2018-12-29  本文已影响2人  罂粟之城

UIWebView可以实现一个Web浏览器,可以实现静态加载HTML、动态URL地址,可以实现网页导航,以及调用JavaScript等

还有一个重要的功能就是 可以加载PDF文件,并且在加载完成后会回调Delegate方法

程序可以为UIWebView实现UIWebViewDelegate协议,这个协议中包含如下方法:

    - webView:shouldStartLoadWithReaquest:navigationType://将要开始加载制定URL对应的网页时激发该方法。
    - webViewDidStartLoad: //开始加载时激发该方法。
    - webViewDidFinishLoad://加载完成时激发该方法。
    - webView:didFailLoadwithError://加载出现错误时激发该方法。

UIWebView可适用的那些属性

self.webview.scrollView.bounces=NO;

self.webView.userInteractionEnabled=YES;

self.webView.scalespageToFit = YES;  //自动对页面进行缩放以适应屏幕

UIWebView的使用:

>> 1.加载一个动态URL地址的步骤如下:
    1.实例化一个UIWebView
        UIWebView *webView=[[UIWebView alloc]initWithFrame:self.view.bounds];
        [webVidew addSubview:webView];
    2.获得NSURLRequest实例
        NSString *str=@"https://www.baidu.com";
        NSURL *url=[NSURL URLWithString:str];
        NSURLRequest *request=[NSURLRequest requestWithURL:url];
    3.调用loadRequest方法加载网页内容
        [webView loadRequest:request];
>> 2.使用UIWebView加载静态的HTML页面
    UIWebView *webView=[[UIWebView alloc]initWithFrame:self.view.bounds];
    NSString *str=@"Hello<b>WebView</b>,<a href=http://developer.apple.com>More...</a>";
    [webView loadHTMLString:str baseURL:nil];
    [webView addSubview:webView];
>> 3.可以为UIWebView设置代理监控UIWebView的加载过程。
>> 4.UIWebView和网页的JavaScript之间可以进行相互通信。
>> 5. 使用 UIWebView 加载PDF文件

UIWebView加载

    UIWebView *pdfWebView = [[UIWebView alloc] initWithFrame:CGRectMake(0, disTopH, kScreenWidth, kScreenHeight-disTopH)];
    pdfWebView.backgroundColor = [UIColor whiteColor];
    pdfWebView.delegate = self;
    
    // pdfPath -- 是PDF 文件的存储路径,如果存放在工程中,使用 [[NSBundle mainBundle]pathForResource:@"xxx" ofType:@"pdf"]获取即可。
    NSURL *pdfFilePathURL = [NSURL fileURLWithPath:pdfPath];
    NSURLRequest *request = [NSURLRequest requestWithURL: pdfFilePathURL];
    [pdfWebView loadRequest:request];
    //使文档的显示范围适合UIWebView的bounds
    [pdfWebView setScalesPageToFit:YES];
    [self.view addSubview:pdfWebView];

    //  12.0后为了关闭加载过程中的进度条或者其他操作
    // 可使用延迟的方法,在PDF加载完成后作出相应的操作
        if (@available(iOS 12.0,*)) {
        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
            NSLog(@"使用延时关闭进度条的加载");
            // 在PDF加载完成后,作出相应的操作即可
            //[MBProgressHUD hideHUDForView:self.view];
        });
    }
    

UIWebView代理 -- 但是在 iOS 12.0的FrameWork中首次出现此方法,API_DEPRECATED

#pragma mark - webView delegate
- (void)webViewDidFinishLoad:(UIWebView *)webView{
    NSLog(@"pdf在UIWebView加载完成");
    NSLog(@"log-输出self查看:%@",self);
    [MBProgressHUD hideHUDForView:self.view];   
}
以上是对 UIWebView 控件的描述和使用,不以偏概全,只授之以渔,有更好的操作也会及时更新。如果您有UIWebView控件的更好使用欢迎留言交流!
上一篇 下一篇

猜你喜欢

热点阅读