如果直接用UIWebView来显示网页很简单,只需要向UIWebView发送一个NSURLRequest即可。但是你会发现,不够人性化,因为你不知道当前状况,网页是否在加载,是否已加载完。mobile safari就很有人性化, 不但有blue progressbar,还有一个network activity indicator在status bar.
那么我们也需要加入这样的特色到应用当中。加入network activity indicator其实很简单,代码如下:
- (void)showLoading { [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES]; self.theActivityView.hidden = NO; [self.theActivityView startAnimating]; } - (void)hideLoading { [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO]; self.theActivityView.hidden = YES; [self.theActivityView stopAnimating]; } - (void)webViewDidStartLoad:(UIWebView *)webView { [self showLoading]; NSLog(@"start load"); } - (void)webViewDidFinishLoad:(UIWebView *)webView { [self hideLoading]; NSLog(@"finish load"); } - (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error { [self hideLoading]; NSLog(@"error load"); }theActivityView是UIActivityIndicatorView的实例。 这样当UIWebView加载网页的时候,就会在status bar有一个indicator, 在UIWebView frame当中还有一个UIActivityIndicatorView以示网页正在加载。
研究了一下如何实现progressbar,还没找到方法。因为UIWebView可用的delegate方法只有那么几个,对进度条显示没有帮助,只有另寻他法。