ios学习之UIWebView网页视图

ios学习之UIWebView网页视图


 

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 . view  addSubview : WebView];  //加载到自己的view

 

url = [[ NSURL alloc ] 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文件中进行声明

[ activityIndicator  setCenter :  opaqueview. center ];

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

[ opaqueview  setBackgroundColor:[ UIColor   blackColor]];

[ opaqueview  setAlpha: 0.6 ];

[ self . view  addSubview :  opaqueview];

[ opaqueview  addSubview : activityIndicator];

接下来添加

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

[activityIndicator stopAnimating];

opaqueview.hidden  = YES ;

}

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

[ activityIndicator startAnimating ]; 

opaqueview.hidden  = NO ;

}

这样就简单的实现了UIWebView控件的加载使用,不同的页面均有加载的等待。

 

复制代码
//.h文件
@interface ViewController : UIViewController<UIWebViewDelegate>{
    IBOutlet UIWebView *webView;
    UIActivityIndicatorView *activityIndicatorView;
    UIView *opaqueview;
}

//.m文件
- (void)viewDidLoad
{
    [superviewDidLoad];
webView = [[UIWebViewalloc] initWithFrame:CGRectMake(0, 44, 320, 440 )];
    [webViewsetUserInteractionEnabled:YES];             //是否支持交互
    [webView setDelegate:self];                          //委托
    [webView setOpaque:NO];                              //Opaque为不透明的意思,这里为透明
    [webView setScalesPageToFit:YES];                    //自动缩放以适应屏幕
    [self.view addSubview:webView];             

//加载网页的方式
    //1.创建并加载远程网页
    NSURL* url = [NSURLURLWithString:@"http://www.baidu.com"];
    [webViewloadRequest:[NSURLRequestrequestWithURL:url]];  
    //2.加载本地文件资源
//    NSURL *url = [NSURL fileURLWithPath:filePath];  //filePath为文件路径
//    NSURLRequest *request = [NSURLRequest requestWithURL:url];
//    [webView loadRequest:request];

    //3.读入一个 HTML,直接写入一个HTML代码
//    NSString *htmlPath = [[[NSBundle mainBundle] bundlePath] stringByAppendingPathComponent:@"webapp/loader.html"];//相当于文件地址
//    NSString *htmlString = [NSString stringWithContentsOfFile: htmlPath encoding:NSUTF8StringEncoding error:NULL];
//    [webView loadHTMLString:htmlString baseURL:[NSURL fileURLWithPath:htmlPath]];
 opaqueview = [[UIViewalloc] initWithFrame:CGRectMake(0, 0, 320, 480)]; //opaqueview 需要在.h文件中进行声明用以做UIActivityIndicatorView的容器view;

    activityIndicatorView = [[UIActivityIndicatorViewalloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
    [activityIndicatorView setCenter:opaqueview.center];

    [ activityIndicatorView   setActivityIndicatorViewStyle: UIActivityIndicatorViewStyleWhite];  //颜色根据不同的界面自己调整   
    [ opaqueview  setBackgroundColor:[ UIColor   blackColor]];  
    [ opaqueview  setAlpha: 0.6 ];
    [ self . view  addSubview :  opaqueview];    
    [ opaqueview  addSubview : activityIndicatorView];
}

//当网页视图已经开始加载一个请求之后得到通知

- (void) webViewDidStartLoad:(UIWebView  *)webView {
    [activityIndicatorViewstartAnimating];
    opaqueview.hidden = NO;
}

//当网页视图结束加载一个请求之后得到通知

- (void) webViewDidFinishLoad:(UIWebView *)webView{
    [activityIndicatorViewstopAnimating]; //停止风火轮
    opaqueview.hidden = YES; //隐藏
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值