UIWebView基础篇

2024-06-17 02:58
文章标签 基础 uiwebview

本文主要是介绍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;

这篇关于UIWebView基础篇的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1068302

相关文章

从基础到进阶详解Python条件判断的实用指南

《从基础到进阶详解Python条件判断的实用指南》本文将通过15个实战案例,带你大家掌握条件判断的核心技巧,并从基础语法到高级应用一网打尽,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一... 目录​引言:条件判断为何如此重要一、基础语法:三行代码构建决策系统二、多条件分支:elif的魔法三、

Python WebSockets 库从基础到实战使用举例

《PythonWebSockets库从基础到实战使用举例》WebSocket是一种全双工、持久化的网络通信协议,适用于需要低延迟的应用,如实时聊天、股票行情推送、在线协作、多人游戏等,本文给大家介... 目录1. 引言2. 为什么使用 WebSocket?3. 安装 WebSockets 库4. 使用 We

从基础到高阶详解Python多态实战应用指南

《从基础到高阶详解Python多态实战应用指南》这篇文章主要从基础到高阶为大家详细介绍Python中多态的相关应用与技巧,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、多态的本质:python的“鸭子类型”哲学二、多态的三大实战场景场景1:数据处理管道——统一处理不同数据格式

MySQL数据类型与表操作全指南( 从基础到高级实践)

《MySQL数据类型与表操作全指南(从基础到高级实践)》本文详解MySQL数据类型分类(数值、日期/时间、字符串)及表操作(创建、修改、维护),涵盖优化技巧如数据类型选择、备份、分区,强调规范设计与... 目录mysql数据类型详解数值类型日期时间类型字符串类型表操作全解析创建表修改表结构添加列修改列删除列

Python 函数详解:从基础语法到高级使用技巧

《Python函数详解:从基础语法到高级使用技巧》本文基于实例代码,全面讲解Python函数的定义、参数传递、变量作用域及类型标注等知识点,帮助初学者快速掌握函数的使用技巧,感兴趣的朋友跟随小编一起... 目录一、函数的基本概念与作用二、函数的定义与调用1. 无参函数2. 带参函数3. 带返回值的函数4.

python panda库从基础到高级操作分析

《pythonpanda库从基础到高级操作分析》本文介绍了Pandas库的核心功能,包括处理结构化数据的Series和DataFrame数据结构,数据读取、清洗、分组聚合、合并、时间序列分析及大数据... 目录1. Pandas 概述2. 基本操作:数据读取与查看3. 索引操作:精准定位数据4. Group

从基础到进阶详解Pandas时间数据处理指南

《从基础到进阶详解Pandas时间数据处理指南》Pandas构建了完整的时间数据处理生态,核心由四个基础类构成,Timestamp,DatetimeIndex,Period和Timedelta,下面我... 目录1. 时间数据类型与基础操作1.1 核心时间对象体系1.2 时间数据生成技巧2. 时间索引与数据

安装centos8设置基础软件仓库时出错的解决方案

《安装centos8设置基础软件仓库时出错的解决方案》:本文主要介绍安装centos8设置基础软件仓库时出错的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录安装Centos8设置基础软件仓库时出错版本 8版本 8.2.200android4版本 javas

Linux基础命令@grep、wc、管道符的使用详解

《Linux基础命令@grep、wc、管道符的使用详解》:本文主要介绍Linux基础命令@grep、wc、管道符的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录grep概念语法作用演示一演示二演示三,带选项 -nwc概念语法作用wc,不带选项-c,统计字节数-

python操作redis基础

《python操作redis基础》Redis(RemoteDictionaryServer)是一个开源的、基于内存的键值对(Key-Value)存储系统,它通常用作数据库、缓存和消息代理,这篇文章... 目录1. Redis 简介2. 前提条件3. 安装 python Redis 客户端库4. 连接到 Re