UIWebView基础篇

UIWebView
一、介绍
功能:在app中嵌入web内容(除了HTML内容,UIWebView对象可以用来显示其他内容类型,如幻灯片、PDF、和pages文件。但是最好的呈现简易和富文本的是UITextView)。该UIWebView能完成的功能:在web页面中用类方法前进或后退,也能与web页面进行交互。
注意:iOS 8之后,使用WKWebView代替UIWebView,可以设置WKPreferences属性javaScriptEnabled为NO,使文件不支持运行javaScript。

二、特征
(1)设置代理:delegate属性
(2)加载内容:
-loadHTMLString:baseURL:设置主页面内容和基本的url
-loadRequest: 通过一个异步请求与URL连接,加载web页面。
-loadDaTa:MIMEType:textEncodingName:baseURL:设置主页面内容、MIME类型、内容编码以及url
request属性rel请求
loading一个布尔值,指明用户是否正在加载内容,如果为Yes,表明仍在加载内容。
-stopLoading停止加载web内容
-reload重新加载当前页面
1.载本地的pdf文件:

NSURL *url = [[NSBundle mainBundle]URLForResource:@”Book.pdf”withExtension:nil];

NSURLRequest *request = [NSURLRequest requestWithURL:url];

[_webView loadRequest:request];

2.加载pdf的第二种方式:

NSString *path = [[NSBundle mainBundle] pathForResource:@”Book.pdf” ofType:nil];

//以二进制的形式加载数据

NSData *data = [NSData dataWithContentsOfFile:path];

[_webView loadData:data MIMEType:@”application/pdf” textEncodingName:@”UTF-8”baseURL:nil];

3.加载本地txt文件

NSURL *url = [[NSBundle mainBundle]URLForResource:@”Book.txt”withExtension:nil];

//设置Url

[_webView loadRequest:[NSURLRequest requestWithURL:url]];

4.加载Word

//加载Word

NSURL *url = [[NSBundle mainBundle]URLForResource:@”Book.docx”withExtension:nil];

//设置加载Url

[_webView loadRequest:[NSURLRequest requestWithURL:url]];

(3)前进和后退
canGoBack属性:一个bool值,指明消息的接受者是否能后退
canGoForward属性:一个bool值,指明消息的接受者是否能前进
-goBack
-goForward
(4)设置web内容的属性
JavaScript的执行时间被限定在10秒钟,如果执行时间超过10秒,那么页面就停止执行这个脚本。JavaScript的执行或许能够阻塞主线程,所以当脚本执行的时候不允许用户影响页面的加载。JavaScript的内存分配被限制在10M,如果超出这个限制那么页面会发生异常。
//返回运行脚本语言的结果。
-(NSString*)stringByEvaluatingJavaScriptFromString:(NSString *)script;

//一般在webViewDidFinishLoad内操作,例如:

1.[webView

stringByEvaluatingJavaScriptFromString:@”document.title”]; //获取标题

2.[[webView

stringByEvaluatingJavaScriptFromString:@”document.body.offsetHeight”]

floatValue]; //获取网页内容高度

3.[_webView

stringByEvaluatingJavaScriptFromString:@”document.documentElement.style.webkitTouchCallout

= ‘none’;”];//取消长按webView上的链接弹出actionSheet的问题

4.NSString

*doc=[webView stringByEvaluatingJavaScriptFromString:@”document.documentElement.textContent”];//获取web页面内容信息

5.UIWebView与JS的深度交互参考:http://www.cocoachina.com/ios/20150814/12985.html

//设置是否缩放到适合屏幕大小,如果是,网页缩放以适合,用户可以放大和缩小。如果没有,用户缩放是禁用的。默认值是否定的。
@property (nonatomic) BOOL scalesPageToFit;

//此属性可以设定使电话号码、网址、电子邮件和符合格式的日期等文字变为链接文字。电话号码点击后拨出电话,网址点击后会用Safari打开,电子邮件会用mail打开,而符合格式的日期会弹出一个ActionSheet,有创建事件,在Calendar中显示,和拷贝三个选项。a

@property (nonatomic) UIDataDetectorTypes dataDetectorTypes

//这个值决定了用内嵌HTML5播放视频还是用本地的全屏控制。为了内嵌视频播放,不仅仅需要在这个页面上设置这个属性,还必须的是在HTML中的video元素必须包含webkit-playsinline属性。默认使NO。
@property (nonatomic) BOOL allowsInlineMediaPlayback

//这个值决定了HTML5视频可以自动播放还是需要用户去启动播放
@property (nonatomic) BOOL mediaPlaybackRequiresUserAction

//设置音频播放是否支持air play功能

@property (nonatomic) BOOL mediaPlaybackAllowsAirPlay

//是否网页内容下载完毕才开始渲染web视图,默认为NO
@property (nonatomic) BOOL suppressesIncrementalRendering

//设置用户交互模式,默认YES;当这个属性被设置为YES,用户必须显式地利用web视图中的元素来显示键盘(或其他相关输入视图)的元素。当设置为不,关注事件对一个元素使输入视图显示并自动与元素相关联。这个属性的默认值是肯定的
@property (nonatomic) BOOL keyboardDisplayRequiresUserActionNS_AVAILABLE_IOS(6_0);

三、iOS7中的一些新特性(分页特性)—水平分页

//属性用来设置一种模式,当网页的大小超出view时,将网页以翻页的效果展示,枚举类型:
UIWebPaginationMode paginationMode
{
UIWebPaginationModeUnpaginated,//不使用翻页效果
UIWebPaginationModeLeftToRight, //将网页超出部分分页,从左向右进行翻页
UIWebPaginationModeTopToBottom, //将网页超出部分分页,从上向下进行翻页
UIWebPaginationModeBottomToTop, //将网页超出部分分页,从下向上进行翻页
UIWebPaginationModeRightToLeft //将网页超出部分分页,从右向左进行翻页
}
这个属性决定内容的web视图分为页面填充视图一个屏幕上,或显示为一个长的滚动视图。如果设置为一个分页的形式,这个属性切换分页的布局内容,导致网页视图使用的值pageLength和gapBetweenPages relayout其内容。看到UIWebPaginationMode可能值。默认值是UIWebPaginationModeUnpaginated。

//设置分页模式,该属性决定是否遵循特定的CSS属性(属性表示上下翻页还是左右翻),当属性是UIWebPaginationBreakingModeColumn,上下翻页
@property (nonatomic) UIWebPaginationBreakingMode paginationBreakingMode

//设置每一页的长度,如设置paginationMode为从左到右或从右到左,这个值表示页面的宽度;如果是从上到下,表示高度
@property (nonatomic) CGFloat pageLength

//设置每一页的间距
@property (nonatomic) CGFloat gapBetweenPages

//获取分页数
@property (nonatomic, readonly) NSUInteger pageCount

五、iOS9中的一些新特性(分屏任务系统)

//分屏中是否播放,一个布尔值,确定是否允许从画中画播放这一观点。
@property (nonatomic) BOOL allowsPictureInPictureMediaPlayback

//长按链接是否支持预览(支持3D Touch的设备);此属性可用设备上支持3d Touch。默认值是否定的。如果你将这个值设置为YES web视图,用户(设备支持3 d)可以预览链接的目的地,并且可以预览检测数据,如地址,按上链接。这些预览用户窥探。如果用户按下更深,预览导航(或持久性有机污染物,在用户的术语)的目的地。因为流行导航切换用户从应用程序到Safari,选择,这个属性,而这类的默认行为。如果你想支持链接预览,还想让用户在你的应用程序,您可以切换使用UIWebView类SFSafariViewController类。如果您正在使用一个web浏览器视图作为应用内,这种变化是最佳实践。Safari视图控制器类自动支持链接预览。
@property (nonatomic)BOOL allowsLinkPreview// default is NO

六、webView协议中的方法

//捕捉用户的操作
- (BOOL)webView:(UIWebView )webView shouldStartLoadWithRequest:(NSURLRequest)request navigationType:(UIWebViewNavigationType)navigationType;

//UIWebViewNavigationType枚举,定义了页面中用户行为的分类,包括
•UIWebViewNavigationTypeLinkClicked,用户触击了一个链接。
•UIWebViewNavigationTypeFormSubmitted,用户提交了一个表单。
•UIWebViewNavigationTypeBackForward,用户触击前进或返回按钮。
•UIWebViewNavigationTypeReload,用户触击重新加载的按钮。
•UIWebViewNavigationTypeFormResubmitted,用户重复提交表单
•UIWebViewNavigationTypeOther,发生其它行为。

//开始加载时调用的方法
- (void)webViewDidStartLoad:(UIWebView *)webView;

//结束加载时调用的方法
- (void)webViewDidFinishLoad:(UIWebView *)webView;

//加载失败时调用的方法
- (void)webView:(UIWebView )webView didFailLoadWithError:(NSError)error;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员的修养

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值