码迷,mamicode.com
首页 > Web开发 > 详细

UIWebView

时间:2015-07-10 23:32:21      阅读:261      评论:0      收藏:0      [点我收藏+]

标签:

1、概述

  UIWebView是ios内置的浏览器控件,可以浏览网页、打开文档等等,能够加载html/htm、pdf、docx、txt等格式的文件,系统自带的Safari浏览器就是通过UIWebView实现的。

注意:UIWebView自带scrollView。

2、使用

  1.创建UIWebView实例

    UIWebView *aWebView = [[UIWebView alloc] initWithFrame:self.window.frame];

  2.设置属性

   //是否自动缩放页面以适应aWebView的大小
    aWebView.scalesPageToFit = YES;

    aWebView.delegate =self;

  3.加载内容(三种加载方法)

    1)  loadRequest:(NSURLRequest *)request

      a)加载网络地址

    [aWebView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.youku.com"]]];
    [self.window addSubview:aWebView];

      注意:loadRequest的方法本身就是异步的,所以你不必怕影响性能,自己给他再搞个异步。 

 

    显示如下:  

  技术分享

      b)加载本地资源:

    //fileURLWithPath:filepath方法可以将本地的路径转成NSURL实例(filepath是本地一个资源的路径)
    [aWebView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:filepath]]];

    2)loadHTMLString:(NSString *)string baseURL:(NSURL *)baseURL;

      a)加载本地html

    //获得html文件的路径
    NSString *htmlPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"test.html"];
    //根据html路径获得html文件(这里把它转成UTF8格式的字符串了)
    NSString *htemlStr = [[NSString alloc] initWithContentsOfFile:htmlPath encoding:NSUTF8StringEncoding error:nil];
    //当路径在本地时,就用下面的方法换成URL实例,如果在远程web上,则用urlWithString
    NSURL *baseURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]];
    //用webView加载本地html(其实就是加载html的字符串)
    [aWebView loadHTMLString:htemlStr baseURL:baseURL];

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

      b)加载网络html

    // 应用场景:截取网页中的某一部分显示,例如:网页的完整内容中包含广告!加载完成页面之后,把广告部分的HTML删除,然后再加载,该方法被很多新闻类的应用程序使用  
    [self.webView loadHTMLString:@"<p>Hello</p>" baseURL:nil];

    3)loadData:data MIMEType:respnose.MIMEType textEncodingName:@"UTF8" baseURL:nil(以二进制的形式加载文件)

      a)加载本地PDF,需要指定MIMETYPE

[webView loadData:[NSData dataWithContentsOfFile:dataPath] MIMEType:@“application/pdf” textEncodingName:@“UTF-8” baseURL:nil]; 

      b)加载本地文本文件,需要指定MIMETYPE

[webView loadData:[NSData dataWithContentsOfFile:dataPath] MIMEType:@“text/plain” textEncodingName:@“UTF-8” baseURL:nil];

      c)加载本地HTML文件,需要指定MIMETYPE

NSURL *baseURL = [NSURL fileURLWithPath:[[NSBundle mainBundle]resourcePath] isDirectory:YES]; 
[_webView loadData:[NSData dataWithContentsOfFile:dataPath] MIMEType:@“text/html” textEncodingName:@“UTF-8” baseURL:baseURL];

      d)加载网络文件

// 应用场景:加载从服务器上下载的文件,例如pdf,或者word,图片等等文件  
    NSURL *fileURL = [[NSBundle mainBundle] URLForResource:@"iOS 7 Programming Cookbook.pdf" withExtension:nil];  
  
    NSURLRequest *request = [NSURLRequest requestWithURL:fileURL];  
    // 服务器的响应对象,服务器接收到请求返回给客户端的  
    NSURLResponse *respnose = nil;  
     //因为需要使用这个返回值,所以使用同步方法
    NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&respnose error:NULL];  
      
    NSLog(@"%@", respnose.MIMEType);  
      
    // 在iOS开发中,如果不是特殊要求,所有的文本编码都是用UTF8  
    // 先用UTF8解释接收到的二进制数据流  
    [self.webView loadData:data MIMEType:respnose.MIMEType textEncodingName:@"UTF8" baseURL:nil];  
}  

 

  4.导航:UIWebView类内部会管理浏览器的导航动作,通过goForward和goBack方法你可以控制前进与后退动作

[aWebView goBack];  
[aWebView goForward];  
[aWebView reload];//重载   
[aWebView stopLoading];//取消载入内容  

  5.UIWebViewDelegate代理方法

-(BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*) reuqest navigationType:(UIWebViewNavigationType)navigationType;// 网页中的每一个请求都会执行delegate对象的该方法,该方法的返回值用以控制是否允许加载目标链接页面的内容,返回YES将直接加载内容,NO则反之。并且UIWebViewNavigationType枚举,定义了页面中用户行为的分类,包括。通过导航类型参数可以得到请求发起的原因,可以是以下任意值:   

UIWebViewNavigationTypeLinkClicked,用户触击了一个链接。

UIWebViewNavigationTypeFormSubmitted,用户提交了一个表单。

UIWebViewNavigationTypeBackForward,用户触击前进或返回按钮。

UIWebViewNavigationTypeReload,用户触击重新加载的按钮。

UIWebViewNavigationTypeFormResubmitted,用户重复提交表单

UIWebViewNavigationTypeOther,发生其它行为。

-(void)webViewDidStartLoad:(UIWebView*)webView ;//网页开始加载的时候调用
-(void)webViewDidFinishLoad:(UIWebView*)webView ;//网页加载完成的时候调用
-(void)webView:(UIWebView*)webView  DidFailLoadWithError:(NSError*)error;//网页加载出错的时候调用。会提供一个NSSError对象,以标识所发生错误类型。  

 

UIWebView

标签:

原文地址:http://www.cnblogs.com/songshuhaoNB/p/4634731.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!