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控件的加载使用,不同的页面均有加载的等待
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值