IOS中UIWebView的使用详解

一、初始化与三种加载方式

UIWebView继承与UIView,因此,其初始化方法和一般的view一样,通过alloc和init进行初始化,其加载数据的方式有三种:

第一种:

- (void)loadRequest:(NSURLRequest *)request;

这是加载网页最常用的一种方式,通过一个网页URL来进行加载,这个URL可以是远程的也可以是本地的,例如我加载百度的主页:

UIWebView * view = [[UIWebView alloc]initWithFrame:self.view.frame];

[view loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.baidu.com"]]];

[self.view addSubview:view];

会得到如下的效果:

第二种:

- (void)loadHTMLString:(NSString *)string baseURL:(NSURL *)baseURL;

这个方法需要将httml文件读取为字符串,其中baseURL是我们自己设置的一个路径,用于寻找html文件中引用的图片等素材。

第三种:

- (void)loadData:(NSData *)data MIMEType:(NSString *)MIMEType textEncodingName:(NSString *)textEncodingName baseURL:(NSURL *)baseURL;

这个方式使用的比较少,但也更加自由,其中data是文件数据,MIMEType是文件类型,textEncodingName是编码类型,baseURL是素材资源路径。

二、一些常用的属性和变量

@property (nonatomic, assign) id delegate;

设置webView的代理

@property (nonatomic, readonly, retain) UIScrollView *scrollView;

内置的scrollView

@property (nonatomic, readonly, retain) NSURLRequest *request;

URL请求

- (void)reload;

重新加载数据

- (void)stopLoading;

停止加载数据

- (void)goBack;

返回上一级

- (void)goForward;

跳转下一级

@property (nonatomic, readonly, getter=canGoBack) BOOL canGoBack;

获取能否返回上一级

@property (nonatomic, readonly, getter=canGoForward) BOOL canGoForward;

获取能否跳转下一级

@property (nonatomic, readonly, getter=isLoading) BOOL loading;

获取是否正在加载数据

- (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script;

通过javaScript操作web数据

@property (nonatomic) BOOL scalesPageToFit;

设置是否缩放到适合屏幕大小

@property (nonatomic) UIDataDetectorTypes dataDetectorTypes NS_AVAILABLE_IOS(3_0);

设置某些数据变为链接形式,这个枚举可以设置如电话号,地址,邮箱等转化为链接

@property (nonatomic) BOOL allowsInlineMediaPlayback NS_AVAILABLE_IOS(4_0);

设置是否使用内联播放器播放视频

@property (nonatomic) BOOL mediaPlaybackRequiresUserAction NS_AVAILABLE_IOS(4_0);

设置视频是否自动播放

@property (nonatomic) BOOL mediaPlaybackAllowsAirPlay NS_AVAILABLE_IOS(5_0);

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

@property (nonatomic) BOOL suppressesIncrementalRendering NS_AVAILABLE_IOS(6_0);

设置是否将数据加载如内存后渲染界面

@property (nonatomic) BOOL keyboardDisplayRequiresUserAction NS_AVAILABLE_IOS(6_0);

设置用户交互模式

三、iOS7中的一些新特性

下面这些属性是iOS7之后才有的,通过他们可以设置更加有趣的web体验

@property (nonatomic) UIWebPaginationMode paginationMode NS_AVAILABLE_IOS(7_0);

这个属性用来设置一种模式,当网页的大小超出view时,将网页以翻页的效果展示,枚举如下:

typedef NS_ENUM(NSInteger, UIWebPaginationMode) {

UIWebPaginationModeUnpaginated,//不使用翻页效果

UIWebPaginationModeLeftToRight,//将网页超出部分分页,从左向右进行翻页

UIWebPaginationModeTopToBottom,//将网页超出部分分页,从上向下进行翻页

UIWebPaginationModeBottomToTop,//将网页超出部分分页,从下向上进行翻页

UIWebPaginationModeRightToLeft//将网页超出部分分页,从右向左进行翻页

};

@property (nonatomic) CGFloat pageLength NS_AVAILABLE_IOS(7_0);

设置每一页的长度

@property (nonatomic) CGFloat gapBetweenPages NS_AVAILABLE_IOS(7_0);

设置每一页的间距

@property (nonatomic, readonly) NSUInteger pageCount NS_AVAILABLE_IOS(7_0);

获取分页数

四、webView协议中的方法

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType;

准备加载内容时调用的方法,通过返回值来进行是否加载的设置

- (void)webViewDidStartLoad:(UIWebView *)webView;

开始加载时调用的方法

- (void)webViewDidFinishLoad:(UIWebView *)webView;

结束加载时调用的方法

- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error;

加载失败时调用的方法相关阅读:

C#实现简单的Http请求实例

Windows 10 Build 10147有哪些变化?改进UI与应用体验

.Net 项目代码风格要求小结

php读取csv文件并输出的方法

php中sql注入漏洞示例 sql注入漏洞修复

jQuery实现仿新浪微博浮动的消息提示框(可智能定位)

javascript事件模型介绍

基于javascript、ajax、memcache和PHP实现的简易在线聊天室

C#实现Datatable排序的方法

Win10双显示器怎么设置给显示屏设置不同的壁纸?

解读ASP.NET 5 & MVC6系列教程(3):项目发布与部署

深入Understanding Android ContentProvider详解

非常实用的小功能 Android应用版本的更新实例

CentOS中运行PostgreSQL需要修改的内核参数及配置脚本分享

ios首次加载web_IOS_IOS中UIWebView的使用详解,一、初始化与三种加载方式 UI - phpStudy...相关推荐

  1. WinDBG详解进程初始化dll是如何加载的

    一:背景 1.讲故事 有朋友咨询个问题,他每次在调试 WinDbg 的时候,进程初始化断点之前都会有一些 dll 加载到进程中,比如下面这样: Microsoft (R) Windows Debugg ...

  2. iOS开发——加载、滑动翻阅大量图片解决方案详解

    目录(?)[-] 常规思路流程 使用低分辨率图 多线程任务 优化快速翻阅体验 最后还一个砍儿 加载.滑动翻阅大量图片解决方案详解 今天分享一下私人相册中,读取加载.滑动翻阅大量图片解决方案,我想强调的 ...

  3. iOS开发——加载、滑动翻阅大量图片解决方案详解 .

    加载.滑动翻阅大量图片解决方案详解 今天分享一下私人相册中,读取加载.滑动翻阅大量图片解决方案,我想强调的是,编程思想无关乎平台限制. 我要详细说一下,在缩略图界面点击任意小缩略图后,进入高清大图全屏 ...

  4. iOS中MVC等设计模式详解

    iOS中MVC等设计模式详解 在iOS编程,利用设计模式可以大大提高你的开发效率,虽然在编写代码之初你需要花费较大时间把各种业务逻辑封装起来.(事实证明这是值得的!) 模型-视图-控制器(MVC)设计 ...

  5. Entity Framework关联实体的三种加载方法

    推荐文章 EF性能之关联加载 总结很好 一:介绍三种加载方式 Entity Framework作为一个优秀的ORM框架,它使得操作数据库就像操作内存中的数据一样,但是这种抽象是有性能代价的,故鱼和熊掌 ...

  6. 加载、滑动翻阅大量图片解决方案详解

    加载.滑动翻阅大量图片解决方案详解 今天分享一下私人相册中,读取加载.滑动翻阅大量图片解决方案,我想强调的是,编程思想无关乎平台限制. 我要详细说一下,在缩略图界面点击任意小缩略图后,进入高清大图全屏 ...

  7. html5代码转换为视频,HTML5中的视频代码详解

    摘要 腾兴网为您分享:HTML5中的视频代码详解,智学网,云闪付,易推广,小红书等软件知识,以及360win10,流量魔盒,fitbit,上港商城,安卓2.3.7,全民惠,五年级下册英语单词表图片,t ...

  8. python中的super用法详解_【Python】【类】super用法详解

    一.问题的发现与提出 在Python类的方法(method)中,要调用父类的某个方法,在Python 2.2以前,通常的写法如代码段1: 代码段1: class A: def __init__(sel ...

  9. JS ES6中export和import详解

    1.Export 模块是独立的文件,该文件内部的所有的变量外部都无法获取.如果希望获取某个变量,必须通过export输出, // profile.js export var firstName = ' ...

最新文章

  1. bootstrap 时间日期日历控件(datetimepicker)附效果图
  2. c#用正则表达式获得指定开始和结束字符串中间的一段文本
  3. C++11与设计模式的交流
  4. ROS: Ubuntu16.04安装ROS-kinetic
  5. jboss url路径_在JBoss的服务器端正确解码URL参数
  6. 为什么人会摆高姿态_为什么感情相处中不要随意掏心掏肺?
  7. [密码学基础][每个信息安全博士生应该知道的52件事][Bristol52]50.什么是BLS基于对的签名方案?
  8. pytorch入门学习(三) 神经网络
  9. linux修改参数命令,linux chfn命令参数及用法详解(linux修改用户资料命令)
  10. Python题库编程记录
  11. 非线性光纤光学——四波混频
  12. caj安装,win10,错误1372。无效驱动器:D:\ (解决方案大全总结)
  13. qq邮箱sina邮箱服务器拒绝,为什么有的qq邮箱,新浪这边邮不过去呢?
  14. 电脑误删wps文件怎么恢复?介绍4个解决方法
  15. 1227. 飞机座位分配概率
  16. 『TensorFlow』pad图片
  17. 傅里叶级数用matlab,傅里叶级数展开matlab实现
  18. 电脑桌面切屏的快捷键
  19. 笔刷分享|每个建模人都在用的笔刷合集
  20. 报错:Entering emergency mode. Exit the shell to continue 解决

热门文章

  1. 【BZOJ2325】[ZJOI2011]道馆之战 线段树+树链剖分
  2. 2.从入口开始学习StarForce
  3. choose when 改在java中_Mybatis choose when用法实例代码
  4. Unity+C#开发笔记(四)| 如何判断两次按键的时间间隔 | ╭(●`∀´●)╯╰(●’◡’●)╮
  5. 设计模式的艺术 行为型模式之备忘录模式
  6. QQ空间打不开的解决方案
  7. 世界上为什么有红绿灯?|【常垒·常识】
  8. 实验六——PE病毒分析
  9. 使用说明二维码怎么做?二维码制作教程分享
  10. Linux 打印文件某几行