UIWebView和UIActivityIndicatorView的结合使用

环境:Xcode6.1

UIWebView是iOS开发中常用的一个控件,是内置的浏览器控件,我们可以用它来浏览网页,加载文档等。这篇文件将结合UIActivityIndicatorView控件制作一个小实例(加载apple的官网)。效果如下:

     

一.建立一个SingleView工程

二.初始化界面

ViewController.h文件

1 #import <UIKit/UIKit.h>
2 
3 @interface ViewController : UIViewController
4 
5 @property (nonatomic,strong) UIActivityIndicatorView *activityIndicatorView;
6 @property (nonatomic,strong) UIWebView *webView;
7 
8 @end

ViewController.m文件中,先写一个初始化UI的方法

 1 - (void)stepUI {
 2     self.webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
 3     [self.view addSubview:self.webView];
 4     
 5     self.activityIndicatorView = [[UIActivityIndicatorView alloc] init];
 6     self.activityIndicatorView.center = self.view.center;
 7     self.activityIndicatorView.bounds = CGRectMake(0, 0, 50, 50);
 8     self.activityIndicatorView.activityIndicatorViewStyle = UIActivityIndicatorViewStyleGray;
 9     [self.webView addSubview:self.activityIndicatorView];
10 }

在ViewDidLoad方法中加载初始化UI的方法和处理UIWebView要加载的内容,并设置代理

 1 - (void)viewDidLoad {
 2     [super viewDidLoad];
 3     [self stepUI];
 4     
 5     self.webView.delegate = self;
 6     NSString *str = [NSString stringWithFormat:@"http://www.apple.com/"];
 7     NSURL *url = [NSURL URLWithString:str];
 8     NSURLRequest *request = [NSURLRequest requestWithURL:url];
 9     [self.webView loadRequest:request];
10 }

三.通过UIWebView的代理方法,处理UIActivityIndicatorView的显示

让ViewController遵守UIWebViewDelegate协议

UIWebViewDelegate有下面的几个方法:

- (void)webViewDidStartLoad:(UIWebView *)webView;开始加载的时候执行

- (void)webViewDidFinishLoad:(UIWebView *)webView;加载完成的时候执行

- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error;加载出错的时候执行

UIActivityIndicatorView控件有如下的两个方法:

- (void)startAnimating;

- (void)stopAnimating;

 1 #pragma mark ---web view delegate
 2 - (void)webViewDidStartLoad:(UIWebView *)webView {
 3     [self.activityIndicatorView startAnimating];
 4 }
 5 - (void)webViewDidFinishLoad:(UIWebView *)webView {
 6     [self.activityIndicatorView stopAnimating];
 7 }
 8 - (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error {
 9     NSLog(@"%@",error);
10 }

对于加载时的出错,楼主只是简单的进行打印

最后,在模拟器上运行即可。

错误总结:

1.最开始写URL时没有写协议http,只是简单的www.apple.com,导致加载失败。

2.设置UIActivityIndicatorView控件的显示样式时,没有考虑到UIWebView的加载页面为白色,还傻兮兮的设置为

self.activityIndicatorView.activityIndicatorViewStyle = UIActivityIndicatorViewStyleWhite;

导致加载时没有看到显示效果,花了许久的时间才发现问题。所以写代码前一定要思维严谨,多做合理性的考虑。

 

posted @ 2015-09-03 16:03  阿赖耶云  阅读(298)  评论(0编辑  收藏  举报