詳解UIWebView之網絡狀況顯示
UIWebView之網絡狀況顯示是本文介紹的內容,如果直接用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");
- }
- - (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方法只有那么幾個,對進度條顯示沒有幫助,只有另尋他法。
小結:詳解UIWebView之網絡狀況顯示的內容介紹完了,希望通過本文的學習能對你有所幫助。