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

相关文章

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【Linux 从基础到进阶】Ansible自动化运维工具使用

Ansible自动化运维工具使用 Ansible 是一款开源的自动化运维工具,采用无代理架构(agentless),基于 SSH 连接进行管理,具有简单易用、灵活强大、可扩展性高等特点。它广泛用于服务器管理、应用部署、配置管理等任务。本文将介绍 Ansible 的安装、基本使用方法及一些实际运维场景中的应用,旨在帮助运维人员快速上手并熟练运用 Ansible。 1. Ansible的核心概念

AI基础 L9 Local Search II 局部搜索

Local Beam search 对于当前的所有k个状态,生成它们的所有可能后继状态。 检查生成的后继状态中是否有任何状态是解决方案。 如果所有后继状态都不是解决方案,则从所有后继状态中选择k个最佳状态。 当达到预设的迭代次数或满足某个终止条件时,算法停止。 — Choose k successors randomly, biased towards good ones — Close

音视频入门基础:WAV专题(10)——FFmpeg源码中计算WAV音频文件每个packet的pts、dts的实现

一、引言 从文章《音视频入门基础:WAV专题(6)——通过FFprobe显示WAV音频文件每个数据包的信息》中我们可以知道,通过FFprobe命令可以打印WAV音频文件每个packet(也称为数据包或多媒体包)的信息,这些信息包含该packet的pts、dts: 打印出来的“pts”实际是AVPacket结构体中的成员变量pts,是以AVStream->time_base为单位的显

C 语言基础之数组

文章目录 什么是数组数组变量的声明多维数组 什么是数组 数组,顾名思义,就是一组数。 假如班上有 30 个同学,让你编程统计每个人的分数,求最高分、最低分、平均分等。如果不知道数组,你只能这样写代码: int ZhangSan_score = 95;int LiSi_score = 90;......int LiuDong_score = 100;int Zhou

c++基础版

c++基础版 Windows环境搭建第一个C++程序c++程序运行原理注释常亮字面常亮符号常亮 变量数据类型整型实型常量类型确定char类型字符串布尔类型 控制台输入随机数产生枚举定义数组数组便利 指针基础野指针空指针指针运算动态内存分配 结构体结构体默认值结构体数组结构体指针结构体指针数组函数无返回值函数和void类型地址传递函数传递数组 引用函数引用传参返回指针的正确写法函数返回数组

【QT】基础入门学习

文章目录 浅析Qt应用程序的主函数使用qDebug()函数常用快捷键Qt 编码风格信号槽连接模型实现方案 信号和槽的工作机制Qt对象树机制 浅析Qt应用程序的主函数 #include "mywindow.h"#include <QApplication>// 程序的入口int main(int argc, char *argv[]){// argc是命令行参数个数,argv是

【MRI基础】TR 和 TE 时间概念

重复时间 (TR) 磁共振成像 (MRI) 中的 TR(重复时间,repetition time)是施加于同一切片的连续脉冲序列之间的时间间隔。具体而言,TR 是施加一个 RF(射频)脉冲与施加下一个 RF 脉冲之间的持续时间。TR 以毫秒 (ms) 为单位,主要控制后续脉冲之前的纵向弛豫程度(T1 弛豫),使其成为显著影响 MRI 中的图像对比度和信号特性的重要参数。 回声时间 (TE)

Java基础回顾系列-第七天-高级编程之IO

Java基础回顾系列-第七天-高级编程之IO 文件操作字节流与字符流OutputStream字节输出流FileOutputStream InputStream字节输入流FileInputStream Writer字符输出流FileWriter Reader字符输入流字节流与字符流的区别转换流InputStreamReaderOutputStreamWriter 文件复制 字符编码内存操作流(

Java基础回顾系列-第五天-高级编程之API类库

Java基础回顾系列-第五天-高级编程之API类库 Java基础类库StringBufferStringBuilderStringCharSequence接口AutoCloseable接口RuntimeSystemCleaner对象克隆 数字操作类Math数学计算类Random随机数生成类BigInteger/BigDecimal大数字操作类 日期操作类DateSimpleDateForma