UIWebView是iOS sdk中一个最常用的控件。是内置的浏览器控件,我们可以用它来浏览网页、打开文档等等,UIWebView能够加载html/htm、pdf、docx、txt等格式的文件 
系统自带的Safari浏览器就是通过UIWebView实现的。下面我的一起来开开如何简单使用webView。

  1、搭建UI界面

  2MIME的英文全称是“Multipurpose Internet Mail Extensions”

  多用途互联网邮件扩展,是一个互联网标准,最早应用于电子邮件系统,后来应用到浏览器,在这里我们需要得到文件的MIMIE类型,如何获取呢?咱们通过下面方式获取

- (NSString *) getMimeType:(NSString * ) path{

    //本地文件路径
NSURL * url=[NSURL fileURLWithPath:path];
//创建请求
NSURLRequest * request=[NSURLRequest requestWithURL:url];
NSURLResponse * response;
//发送同步请求获取响应类型
[NSURLConnection sendSynchronousRequest:request returningResponse:(&response) error:nil];
return response.MIMEType;
}

3 加载pdf文件

    //监测所有数据类型:设定电话号码、网址、电子邮件和日期等文字变为链接文字
[webView setDataDetectorTypes:UIDataDetectorTypeAll]; //设置需要展示的文件路径,并且取得mimeType类型
NSString * str=[[NSBundle mainBundle] pathForResource:@"iOS6Cookbook.pdf" ofType:nil];
NSString * mimeType=[self getMimeType:str]; //调用方法加载数据
NSData * data=[NSData dataWithContentsOfFile:str];
[self.webView loadData:data MIMEType:mimeType textEncodingName:@"UTF-8" baseURL:nil];

  效果图:

  4、加载txt和上面类似本文不做讲解 

  5、加载HTML,现在有html文件一个

加载页面,获取字符串然后显示即可:

//监测所有数据类型:设定电话号码、网址、电子邮件和日期等文字变为链接文字
[webView setDataDetectorTypes:UIDataDetectorTypeAll];
//设置需要展示的文件路径,并且取得mimeType类型
NSString * str=[[NSBundle mainBundle] pathForResource:@"book_v2.html" ofType:nil];
NSString * mimeType=[self getMimeType:str];
//调用方法加载数据
NSData * data=[NSData dataWithContentsOfFile:str]; NSString * htmlStr=[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
[self.webView loadHTMLString:htmlStr baseURL:nil];

效果图:

6、加载URL请求

    //监测所有数据类型:设定电话号码、网址、电子邮件和日期等文字变为链接文字
[webView setDataDetectorTypes:UIDataDetectorTypeAll]; NSURL * url=[NSURL URLWithString:@"http://21-sun.com"];
[self.webView loadRequest:[NSURLRequest requestWithURL:url]];

效果图:

7、代理方法

// 网页开始加载的时候调用
-(void)webViewDidStartLoad:(UIWebView *)webView
// 网页加载完成的时候调用
-(void)webViewDidFinishLoad:(UIWebView *)webView
// 网页加载出错的时候调用
-(void)webView:(UIWebView )webView didFailLoadWithError:(NSError )error
// 网页中的每一个请求都会被触发这个方法,返回NO代表不执行这个请求(常用于JS与iOS之间通讯)
-(BOOL)webView:(UIWebView )webView shouldStartLoadWithRequest:(NSURLRequest )request navigationType:(UIWebViewNavigationType)navigationType

  想要了解更多内容的小伙伴,可以点击查看源码,亲自运行测试。

  疑问咨询或技术交流,请加入官方QQ群: (452379712)

作者:杰瑞教育
出处:http://www.cnblogs.com/jerehedu/ 
本文版权归烟台杰瑞教育科技有限公司和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
 

IOS中WebView的使用的更多相关文章

  1. iOS中webView加载URL需要处理特殊字符

    今天在项目中遇到webView加载URL时,因为URL中有特殊字符,导致页面无法加载,而且在- (BOOL)webView:(UIWebView )webView shouldStartLoadWit ...

  2. ios中webview的高级用法(二)

     框架: webview与js的通信框架 #import "MJViewController.h" #import "MBProgressHUD+Add.h" ...

  3. ios中webview的高级用法

    .隐藏上下滚动时出边界的后面的黑色的阴影 - (void) hideGradientBackground:(UIView*)theView { for (UIView * subview in the ...

  4. ios中,长按Webview中的图片

    我们所要解决的问题如题目所示:ios中,长按Webview中的图片,将图片保存到本地相册. 解决方案:对load的html网页,执行js注入,通过在webview中执行js代码,来响应点击事件,通过j ...

  5. Unity在Android和iOS中如何调用Native API

    本文主要是对unity中如何在Android和iOS中调用Native API进行介绍. 首先unity支持在C#中调用C++ dll,这样可以在Android和iOS中提供C++接口在unity中调 ...

  6. IOS修改webView背景透明以及IOS调用前台js的方法

    工作上遇到IOS的webView中的H5页面需要透明以显示webView的背景颜色.用H5自身的透明度的css样式或者js控制背景颜色及透明度都打不到想要的效果,最后还是通过ios设置webView中 ...

  7. 【iOS】WebView加载HTML图片大小自适应与文章自动换行

    在很多App中都会使用到webview,尤其是在加载新闻内容等文章形式的数据时.因为图文混编以及不同字体格式的显示,在iOS进行编辑 和显示都是一大问题(当然,iOS中也可以用CoreText进行绘制 ...

  8. Cordoval在iOS中的运用整理

    一:关于Cordoval理论知识 1:PhoneGap是手机平台上流行的一款中间件.它构建在各种手机平台所提供的WebView(浏览器内核)组件的基础之上,使用javascript语言对应用开发者提供 ...

  9. 浅谈iOS中的userAgent

    浅谈iOS中的userAgent   User-Agent(用户代理)字符串是Web浏览器用于声明自身型号版本并随HTTP请求发送给Web服务器的字符串,在Web服务器上可以获取到该字符串. 在公司产 ...

随机推荐

  1. Java Integer Cache

    Java Integer Cache Java 代码 public class IntegerDemo { public static void main(String[] args) { Integ ...

  2. 那些年遇到的php之坑

    1. php指针没有重置 $arr = array( array('aaaaaaaa'), array('bbbbbbb') ); unset($arr[0]); unset($arr[1]); so ...

  3. springMVC+freemarker实现自定义标签

    在开发过程中,有些需要引用到重复的页面,或者动态的数据 修改数据库是可以实现,但是太麻烦了. freemarker自定义标签在开发中用途很广,就说个入门实例吧 基于springmvc. 首先需要导入对 ...

  4. java 错误:无法找到或装入主类

    1. 删除找不到的jar 2. 删除src以外的文件夹

  5. 【BZOJ 2839】 2839: 集合计数 (容斥原理)

    2839: 集合计数 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 399  Solved: 217 Description 一个有N个元素的集合有2 ...

  6. 欧拉回路 uoj117

    写了一道欧拉回路的模板题.先判断是否是欧拉回路,有向图和无向图有一点点不同,然后就是特判独立点的存在. 之后是输出路径,和dls学的dfs,利用last数组的更新可以做到线性的复杂度,否则一不小心就会 ...

  7. [SDOI2017]数字表格 --- 套路反演

    [SDOI2017]数字表格 由于使用markdown的关系 我无法很好的掌控格式,见谅 对于这么简单的一道题竟然能在洛谷混到黑,我感到无语 \[\begin{align*} \prod\limits ...

  8. BZOJ2157: 旅游 树链剖分 线段树

    http://www.lydsy.com/JudgeOnline/problem.php?id=2157   在对树中数据进行改动的时候需要很多pushdown(具体操作见代码),不然会wa,大概原因 ...

  9. 2018BNU校赛总决赛

    题解是qls的题解我就懒得写了23333 A塞特斯玛斯塔 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K 64bit IO Format: %lld ...

  10. 2017-2018-1 JAVA实验站 冲刺 day02

    2017-2018-1 JAVA实验站 冲刺 day02 各个成员今日完成的任务 小组成员 今日工作 完成进度 张韵琪 写博客.进行工作总结 100% 齐力锋 找背景音乐.开始界面图片.按钮图片.按钮 ...