码迷,mamicode.com
首页 > Web开发 > 详细

UIWebView加载本地HTML文件

时间:2016-09-24 21:41:46      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:

写本文的原因是今天被要求「调研在iOS中加载本地HTML的相关技术」,好记性不如烂笔头,将一些东西给记录下来吧。

应用场景是这样的:手头的iOS App有一部分UI需要使用HTML完成,好处是这部分UI可以更灵活,即可以在任何不需要升级App的情况下更新这部分UI(包括样式、操作等等)。当下非常火的技术 – Facebook的React Native – 正是用来解决这种问题的,毕竟在传统的开发模式下,更新UI必须要升级App,而升级App是一个非常耗时的过程。使用Web App部分代替Native App已经成为当下移动客户端开发的一种思潮了。为了简便起见,也为了不给项目的接盘者制造更高的门槛,暂时决定不使用React Native(原因是多方面的)等著名框架去这种事情,从0开始探究。话说胡来,也许走了这么一遭之后,以后学习React Native会有更多的体会呢!

总之,目前的构想是这样的:

  1. App部分UI是由HTML+JS+CSS完成的,HTML+JS+CSS代码会随着App一起发布;
  2. 当后端决定更新App的部分UI(HTML)时,客户端从服务器下载最新的HTML+JS+CSS包,解压后代替本地的、旧的HTML+JS+CSS资源,将最新的呈现给用户,至此完成UI的更新;

因此有这么些问题需要考虑:

  1. 加载本地HTML+JS+CSS资源(在iOS中,通常使用UIWebView);
  2. 解压从服务端下载的压缩文件(HTML+JS+ CSS包);
  3. JS代码和OC代码的互相调用;

本文主要探究第一个问题!

UIWebView介绍

UIWebView是iOS中一个非常常用的控件,是内置的浏览器控件,可能也是最强大复杂的控件。可以用它来浏览网页、打开文档(譬如PDF文档)等等。

UIWebView既可以用来显示本地文档,也可以用来显示网络文档。无论是显示本地文件还是网络文件,此过程都可以统称为「加载」。与「加载」相关的方法不多,只有三个:

// Loading Local Content or Loading Content From the Network
- (void)loadRequest:(NSURLRequest *)request;
 
// 嵌入HTML结构的字符串
- (void)loadHTMLString:(NSString *)string
baseURL:(NSURL *)baseURL;
 
// Loading Local Content
- (void)loadData:(NSData *)data
MIMEType:(NSString *)MIMEType
textEncodingName:(NSString *)textEncodingName
baseURL:(NSURL *)baseURL;

与UIWebView相关的知识点并不多(从某种角度来看,也可以认为是Apple封装得比较好吧),除了上述的三个方法之外,还有必要了解的是UIWebViewDelegate定义的一些delegate方法:

// 开始加载前调用
- (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;

除此之外,UIWebView似乎有啥其他需要了解的内容,若有需要,以后再补充吧!

UIWebView加载本地HTML文件

标签:

原文地址:http://www.cnblogs.com/zhiyong666/p/5904083.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!