`

UIWebView中使用UIActivityIndicatorView

 
阅读更多

基于手机 网络环境问题 
在UIWebView控件使用的时候,程序习惯添加UIActivityIndicatorView用以控制UIWebview的加载等待,在等待的时间 
内用户不允许操作,所以我们还要在当前的UIWebview上添加一个透明的view(opaqueview)用以防止用户点击,然后把 
UIActivityIndicatorView添加到我们自己定义的view(opaqueview)上。这样当网页加载开始的时候我们把 
UIActivityIndicatorView打开,当网页加载完毕的时候我们可以取消UIActivityIndicatorView,从而实现了对 
UIWebView的加载等待。

一.UIWebView加载的时候通常有几种方法

1.loadRequest:

2.loadHTMLString:string baseURL:

3.loadData:MIMEType:textEncodingName:baseURL:

其中baseURL 是指基准的url 是一个绝对的地址,程序要用到的其他资源就可以根据这个基准地址进行查找而不用再次定位到绝对地址;

二.UIWebView中几个重要的函数
1.- (void )webViewDidStartLoad:(UIWebView
*)webView   网页开始加载的时候调用

2.- (void )webViewDidFinishLoad:(UIWebView
*)webView  网页加载完成的时候调用

3.-(BOOL )webView:(UIWebView *)webView 
shouldStartLoadWithRequest:(NSURLRequest *)request 
navigationType:(UIWebViewNavigationType )navigationType

当程序以UIWebView加载方式1进行加载的时候就会调用到此函数,然后执行webViewDidStartLoad函数,所以我们可以在此函数中进行一些请求解析,URL地址分析的工作。

4.- (void)webView:(UIWebView *)webView
didFailLoadWithError:(NSError *)error

是一个可选的函数,如果页面加载失败可以根据不同的错误类型反馈给用户不同的信息

三.代码实现

1.在.h文件中加载声明UIWebviewDelegate协议

声明WebView

2.实现UIWebView

WebView = [[UIWebView
alloc] initWithFrame: CGRectMake(x,x,x,x)];

[WebView
setUserInteractionEnabled:YES]; 
//是否支持交互

[WebView setDelegate:self]; //委托

[WebView setOpaque:NO]; //透明

[self. viewaddSubview: WebView]; //加载到自己的view



url= [[NSURLalloc]initWithString:@"http:"];

[WebView loadRequest:[NSURLRequest requestWithURL:url]]; //笔者习惯采用loadRequest方式,你可以采用其他方式

opaqueview = [[UIView
alloc] initWithFrame: CGRectMake(x, x, x, x)];        //opaqueview 需要在.h文件中进行声明 
用以做UIActivityIndicatorView的容器view;

activityIndicator = [[UIActivityIndicatorView alloc] 
initWithFrame: CGRectMake(x, x, x, x)];//需要在.h文件中进行声明

[ activityIndicatorsetCenter: opaqueview.center];

[activityIndicator
setActivityIndicatorViewStyle:
UIActivityIndicatorViewStyleWhite]; //颜色根据不同的界面自己调整

[opaqueview setBackgroundColor:[UIColor blackColor]];

[opaqueview setAlpha:0.6];

[self. viewaddSubview: opaqueview];

[opaqueview addSubview: activityIndicator];

接下来添加

- (void )webViewDidFinishLoad:(UIWebView *)webView 
{

[activityIndicator stopAnimating];

opaqueview.hidden  = YES ;

}

- (void )webViewDidStartLoad:(UIWebView *)webView 
{    

[ activityIndicator startAnimating];

opaqueview.hidden  = NO ;

}

这样就简单的实现了UIWebView控件的加载使用,不同的页面均有加载的等待
 
分享到:
评论
1 楼 白色蜻蜓 2012-05-04  
- (void) loadView {
//opaqueview的初始化
NSLog(@"opaqueview和活动指示器开始初始化");
//self.opaqueview = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 640, 960)];
self.indicator = [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(160, 230, 32, 32)];
//[self.indicator setCenter:self.opaqueview.center];
[self.indicator setActivityIndicatorViewStyle:UIActivityIndicatorViewStyleGray];

self.indicator.hidesWhenStopped = YES;
//[self.opaqueview setBackgroundColor:[UIColor clearColor]];
//[self.opaqueview setAlpha:1.0];
[self.navigationController.view addSubview:self.indicator];
//[self.opaqueview addSubview:self.indicator];

相关推荐

    简单浏览器实现

    这个话题主要涉及到苹果的移动操作系统中的UIWebView组件以及UIActivityIndicatorView,这两个是构建简单浏览器的关键元素。 UIWebView是iOS SDK中一个重要的视图类,它允许开发者在应用内部嵌入网页内容。...

    IOS自定义请求uiwebview的loading框

    在实际使用中,你需要在UIWebView的`didStartProvisionalNavigation`代理方法中调用`showLoading`,在`didFinishNavigation`或`didFailProvisionalNavigation`中调用`hideLoading`。例如: ```objc - (void)webView...

    在iOS应用中使用UIWebView创建简单的网页浏览器界面

    在iOS开发中,UIWebView是一个非常重要的组件,它允许开发者在应用程序中集成网页浏览功能。这篇教程主要讲解如何使用UIWebView创建一个简单的网页浏览器界面,并涉及到动态获取UIWebView的高度。 首先,UIWebView...

    IOS中UIWebView加载Loading的实现方法

    在iOS开发中,UIWebView是一个非常重要的组件,用于展示网页内容。当UIWebView加载网页时,我们常常需要添加一个加载指示器(Loading)来告知用户数据正在加载,以提供更好的用户体验。本文将介绍两种在iOS中实现...

    iOS开发中WebView的基本使用方法简介

    这篇教程主要讲解了如何在Objective-C环境中使用UIWebView进行基本的网页加载和错误处理。以下是详细的步骤和知识点: 首先,创建一个新的iOS项目。在XCode 4.3中,选择“Single View Application”模板,并命名为...

    Webview pull and down refresh demo

    总之,"Webview pull and down refresh demo"项目涵盖了iOS开发中关于UIWebView、UIScrollView、UITableView的交互、下拉刷新、上拉加载、事件处理、动画设计以及性能优化等多个重要知识点。开发者通过学习这个示例...

    webview的下拉刷新

    - 对于UIWebView,我们可以利用UIActivityIndicatorView(活动指示器)和手势识别器(GestureRecognizer)来实现。首先,创建一个可滚动的header视图,添加活动指示器,然后监听webView的scrollView的contentOffset...

    前后式滚动图片代码

    1. **UIWebView或WKWebView**:如果图片是从网络加载的,可能需要使用UIWebView(针对iOS 8及以下版本)或WKWebView(针对iOS 9及以上版本)来显示HTML内容,通过JavaScript与Objective-C或Swift交互,实现图片的...

    iosUI控件的使用

    包含collectionView,UIBezierPath,ActionSheet,DatePicker,pickerView,SearchBar,UIActivityIndicatorView,UIAlertView,UIButton,UIimagePicker,UILabel,UInavigationController,UIProgressView,UIScrollerView,...

    Swift实现的常用iOS UI控件

    包含常用的控件的使用UILabel、UIButton、UIsegmentedControl、UITextField、UISlider、UISwitch、UIActivityIndicatorView、UIProgressView、UIStepper、UIImageView、UIAlertView、UIActionSheep、UIDatePicker、...

    iOS 图片预览 资源下载

    为了实现图片预览,iOS开发者通常会使用像`UIImageView`或`UIWebView`这样的内置控件,或者使用第三方库如`Kingfisher`、`SDWebImage`来加载网络图片。此外,可能还会涉及到`UIActivityIndicatorView`显示加载状态,...

    ShareKit:把您要分享的内容统统丢进来的宝箱(适用于iPhone和iPad)

    开发者需要熟悉UIKit框架,包括UIActivityIndicatorView、UIAlertController等控件的使用。 3. **Social Networks API集成**:ShareKit封装了多个社交网络的API,如Facebook的Graph API、Twitter的REST API等。...

    Swift如何为网页承载页面添加更多功能详解

    在`viewDidLoad`方法中,初始化`UIWebView`并设置其代理为当前的`WebViewController`实例。同时,我们添加了一个`UIActivityIndicatorView`(菊花加载器)来指示页面加载状态。当页面加载开始时,显示菊花并启动旋转...

    ios开发记录

    // UIActivityIndicatorView *ai = [[UIActivityIndicatorView alloc] init]; // ai.activityIndicatorViewStyle = UIActivityIndicatorViewStyleWhiteLarge; // ai.backgroundColor = [UIColor blackColor]; // ai....

Global site tag (gtag.js) - Google Analytics