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];
}
网友评论