UIWebView用法详解及代码分享
今天我们来详细UIWebView用法。UIWebView是iOS内置的浏览器控件,可以浏览网页、打开文档等 能够加载html/htm、pdf、docx、txt等格式的文件.
用UIWebView我们就可以做一个简易的浏览器。效果如下:

创建UIWebView
首先创建UIWebView,这个不难,设置frame,然后添加到self.view上即可:
UIWebView *webView = [[UIWebView alloc] initWithFrame:self.view.bounds];
webView.scalesPageToFit = YES;//自动对页面进行缩放以适应屏幕
[self.view addSubview:webView];
UIWebView加载网络地址
用UIWebView来加载网络地址,那我的博客:http://www.superqq.com 来举例。代码如下:
NSURLRequest *request =[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.superqq.com"]];
[self.view addSubview:webView];
[webView loadRequest:request];
UIWebView加载本地资源
通过NSURLRequest加载
NSString *path = [[NSBundle mainBundle] pathForResource:@"swift" ofType:@"html"];
NSURL* url = [NSURL fileURLWithPath:path];//创建URL
NSURLRequest* request = [NSURLRequest requestWithURL:url];//创建NSURLRequest
[webView loadRequest:request];//加载
通过NSString加载
UIWebView 还支持将一个NSString对象作为源来加载。你可以为其提供一个基础URL,来指导UIWebView对象如何跟随链接和加载远程资源:
NSString *path = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"];
NSString *htmlString = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
[webView loadHTMLString:htmlString baseURL:[NSURL URLWithString:path]];
自动检测电话
设置这个属性,如果在加载的网页中遇到电话号码,直接单击就可以拨打,非常方便:
webView.dataDetectorTypes = UIDataDetectorTypePhoneNumber;//自动检测网页上的电话号码,单击可以拨打
设置代理和代理方法
UIWebView有五个代理方法,我们可以在不同的代理方法中,完成不同的需求。
//设置代理
webView.delegate = self;
//代理方法
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
//返回YES,进行加载。通过UIWebViewNavigationType可以得到请求发起的原因
return YES;
}
- (void)webViewDidStartLoad:(UIWebView *)webView
{
//开始加载,可以加上风火轮(也叫菊花)
}
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
//完成加载
}
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
{
//加载出错
}
创建加载他、停止、后退、前进按钮
创建四个按钮,分别是加载按钮、停止按钮、返回按钮、前进按钮:
NSArray *array = [NSArray arrayWithObjects:@"加载",@"停止",@"返回",@"前进", nil];
int far = (SCREEN.width - 200)/5;
for (int i = 0; i < array.count; i++) {
UIButton *button = [[UIButton alloc] init];
button.frame = CGRectMake( (i + 1) * far + 50 * i, SCREEN.height - 60, 50, 40);
button.tag = 200 + i;
[button addTarget:self action:@selector(actionClick:) forControlEvents:UIControlEventTouchUpInside];
[button setTitleColor:[UIColor blueColor] forState:UIControlStateNormal];
[button setBackgroundColor:[UIColor orangeColor]];
[button setTitle:array[i] forState:UIControlStateNormal];
[self.view addSubview:button];
}
前进后退
给四个按钮绑定事件,根据tag值来区分每一个点击事件:
- (void)actionClick:(UIButton *)button
{
switch (button.tag) {
case 200:
{
[self.webView reload];//加载
}
break;
case 201:
{
[self.webView stopLoading];//停止加载
}
break;
case 202:
{
[self.webView goBack];//返回
}
break;
case 203:
{
[self.webView goForward];//前进
}
break;
default:
break;
}
}
大功告成,再来看看效果:

以上分享的内容我做了一个demo,需要的话可以点击这里下载:UIWebView用法详解
本文出处刚刚在线:http://www.superqq.com/blog/2015/07/08/uiwebviewyong-fa-xiang-jie/
UIWebView用法详解及代码分享的更多相关文章
- C#的String.Split 分割字符串用法详解的代码
代码期间,把代码过程经常用的内容做个珍藏,下边代码是关于C#的String.Split 分割字符串用法详解的代码,应该对码农们有些用途. 1) public string[] Split(params ...
- c/c++中define用法详解及代码示例
https://blog.csdn.net/u012611878/article/details/52534622 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog. ...
- SVN组成中trunk,branches and tags功能用法详解
SVN组成中trunk,branches and tags功能用法详解 我相信初学开发在SVN作为版本管理时,都估计没可能考虑到如何灵活的运用SVN来管理开发代码的版本,下面我就摘录一篇文章来简单说 ...
- ava下static关键字用法详解
Java下static关键字用法详解 本文章介绍了java下static关键字的用法,大部分内容摘自原作者,在此学习并分享给大家. Static关键字可以修饰什么? 从以下测试可以看出, static ...
- JavaScript中return的用法和this的用法详解
JavaScript中return的用法详解 最近,跟身边学前端的朋友了解,有很多人对this和函数中的return的用法和意思理解的比较模糊,这里写一篇博客跟大家一起探讨一下return和this的 ...
- JavaScript中return的用法详解
JavaScript中return的用法详解 最近,跟身边学前端的朋友了解,有很多人对函数中的this的用法和指向问题比较模糊,这里写一篇博客跟大家一起探讨一下this的用法和指向性问题. 1定义 t ...
- Delphi TStringHelper用法详解
Delphi TStringHelper用法详解 (2013-08-27 22:45:42) 转载▼ 标签: delphi_xe5 it 分类: Delphi Delphi XE4的TStringHe ...
- JavaScript中this的用法详解
JavaScript中this的用法详解 最近,跟身边学前端的朋友了解,有很多人对函数中的this的用法和指向问题比较模糊,这里写一篇博客跟大家一起探讨一下this的用法和指向性问题. 1定义 thi ...
- 68.connect-flash 用法详解 req,flash()
转自:http://yunkus.com/connect-flash-usage/ connect-flash 用法详解 前端工具 2016-10-05 2016-10-05 朝夕熊 11 ...
随机推荐
- 2014 网选 5012 Dice(bfs模板)
/* 题意:就是给定两个筛子,每个筛子上6个面,每个面的数字属于[1,6], 且互不相同! 问a筛子最少经过按照题目规定的要求转动,达到和b筛子上下左右前后的数字相同! 思路:很直白的bfs,将每一种 ...
- umbraco之DocumentType
DocumentType定义了数据字段,这就像我们在数据库中定义表一样,这个数据字段就像表中的一个字段或者一个列.但不同的是,在umbraco里数据是分等级而不是一个表格性质. 这样就可以使用一个基本 ...
- Most middleware (like favicon) is no longer bundled with Express
Error: Most middleware (like favicon) is no longer bundled with Express and must be installed separa ...
- iOS-高德地图-手动环境搭建
一. 下载地图包 1. 链接地址: http://lbs.amap.com/api/ios-sdk/download/ 2.需要下载的包,并导入包 (1) MAMapKit-5.framework ...
- Win10系统80端口被pid=4的System进程占用 -- 解决方法
背景: 今天在家里电脑下载phpstudy 2016后,准备启动服务器,结果提示80端口被占用 过程: 百度后有这几种解决方法: 1.IIS占用 .SQL server 2008的报表服务占用 可惜这 ...
- 【第三课】ANR和OOM——贪快和贪多的后果(上)
恼人的ANR 早先年用Android的时候,就连很多知名的app也总是莫名其妙崩溃,好像手机快的时候会崩溃,手机卡的时候app会卡死.卡死的时候会弹出来一个框,询问是要结束app还是继续等待.这就是A ...
- 一个关于explain出来为all的说明及优化
explain sql语句一个语句,得到如下结果,为什么已经创建了t_bill_invests.bid_id的索引,但却没有显示using index,而是显示all扫描方式呢,原来这还与select ...
- 数据库中触发器before与after认识
Before与After区别: before:(insert.update)可以对new进行修改,after不能对new进行修改,两者都不能修改old数据. 对于INSERT语句, 只有NEW是合法的 ...
- Spring应用——事务管理
事务基础:请参看:http://www.cnblogs.com/solverpeng/p/5720306.html 一.Spring 事务管理 1.前提:事务管理器 在使用 Spring 声明式事务管 ...
- 字符串hash - POJ 3461 Oulipo
Oulipo Problem's Link ---------------------------------------------------------------------------- M ...