zoukankan      html  css  js  c++  java
  • UIWebView加载本地HTML文件

    写本文的原因是今天被要求「调研在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似乎有啥其他需要了解的内容,若有需要,以后再补充吧!

  • 相关阅读:
    网上订火车票,用chrome和firefox才是王道
    SYNOPSYS VCS常用命令使用详解
    archlinux failed retrieving file 'xxx'解决办法
    JQuery实现点击TreeView文本展开/折叠子节点
    解决VS2010下HTML5的无法智能提示的问题
    Win7 计算机右键“管理”失效
    virtualbox下安装archlinux
    Linux下修改(NTFS)磁盘(卷标)显示名称
    Win7下使用VMWare安装Archlinux
    1.XMLHttpRequest:
  • 原文地址:https://www.cnblogs.com/zhiyong666/p/5904083.html
Copyright © 2011-2022 走看看