UIWebView是内置的浏览器控件,可以用它来浏览网页、打开文档等。UIWebView是一个混合体,具体的功能控件内置的,实现一些基本的功能。UIWebView可以查看Html网页,pdf文件,docx文件,txt文件文件,系统自带的Safari就是UIWebView实现的。
这篇文章将使用这个控件做一个简易浏览器;如图:
新建一个工程,命名为UIWebViewDemo;
如上图,界面上分别放了UITextField(用于地址栏),UIButton(用于设置点击事件),UIWebView(用于展示网页)三个控件。
基础布局:
UITextField,UIButton就不说了,先来看看UIWebView;
@interface ViewController ()<UIWebViewDelegate>{ UITextField *textFiled;
UIButton *button;
UIWebView *webView;
UIActivityIndicatorView *activityIndicator; }
不要忘了设置代理,
//初始化浏览器控件UIWebView
webView = [[UIWebView alloc] initWithFrame:(CGRect){,,width,height-}];
[self.view addSubview:webView];
4 webView.delegate = self;
//定义请求地址
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.baidu.com"]];
//利用浏览器访问地址
[webView loadRequest:request];
网络连接是会遇到半天才加载出来数据的情况,网速比较慢的时候,一般都都会给个提示让用户感觉到我们在努力的加载数据;iOS可以通过UIActivityIndicatorView实现类似的效果,UIActivityIndicatorView实例提供轻型视图,这些视图显示一个标准的旋转进度轮。
iPhone提供了几种不同样式的UIActivityIndicatorView类。UIActivityIndicator- ViewStyleWhite和UIActivityIndicatorViewStyleGray是最简洁的。黑色背景下最适合白色版本的外观,白色背景最适合灰色外观;选择白色还是灰色时要格外注意,全白显示在白色背景下将不能显示任何内容。而UIActivityIndicatorViewStyleWhiteLarge只能用于深色背景,它提供最大、最清晰的指示器。
设置UIWebView,初始化UIActivityIndicatorView:
activityIndicator = [[UIActivityIndicatorView alloc] initWithFrame:(CGRect){,,,}];
[backView addSubview:activityIndicator];
activityIndicator.center = self.view.center;
[activityIndicator setActivityIndicatorViewStyle:UIActivityIndicatorViewStyleWhite];
[activityIndicator startAnimating];
UIWebView主要有下面几个委托方法:
1、- (void)webViewDidStartLoad:(UIWebView *)webView;——开始加载的时候执行该方法。
2、- (void)webViewDidFinishLoad:(UIWebView *)webView;——加载完成的时候执行该方法。
3、- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error;——加载出现错误的时候执行该方法。
开始加载(为了看的清除,我们加上黑色半透明背景和白色的旋转进度轮)
- (void)webViewDidStartLoad:(UIWebView *)webView{
UIView *backView = [[UIView alloc] initWithFrame:(CGRect){,,self.view.frame.size.width,self.view.frame.size.height}];
backView.alpha = 0.5;
backView.backgroundColor = [UIColor blackColor];
[self.view addSubview:backView];
backView.tag = ; activityIndicator = [[UIActivityIndicatorView alloc] initWithFrame:(CGRect){,,,}];
[backView addSubview:activityIndicator];
activityIndicator.center = self.view.center;
[activityIndicator setActivityIndicatorViewStyle:UIActivityIndicatorViewStyleWhite];
[activityIndicator startAnimating];
}
加载完成(旋转进度轮停止,黑色背景移除)
- (void)webViewDidFinishLoad:(UIWebView *)webView{ [activityIndicator stopAnimating];
UIView *view = [self.view viewWithTag:];
[view removeFromSuperview]; }
加载出现错误时,给予提示
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error{ [activityIndicator stopAnimating];
UIView *view = [self.view viewWithTag:];
[view removeFromSuperview]; UIAlertView *alterview = [[UIAlertView alloc] initWithTitle:@"出现错误" message:@"" delegate:nil cancelButtonTitle:nil otherButtonTitles:@"OK", nil];
[alterview show]; }