iOS基础网络教程-Swift版本: 3.使用UIWebView加载本地的数据

在前面, 我们使用了 UIWebView 加载了网络的数据, 其实 UIWebView不只是可以加载普通的网页, 还可以加载其他不同的文件, 比如视频, 音乐, PDF, Word等等文件都是可以的, 下面让我们来看看~~

PS: 例子里的 PDF, Txt, doc 文件请自行准备, 里面的内容随便, 只要格式没有错误就ok


1.代码实现

遵守代理以及实现方法

class ViewController: UIViewController, UIWebViewDelegate {
    // 设置一个 WebView 属性, 供全局使用
    var webView: UIWebView!

    override func viewDidLoad() {
        super.viewDidLoad()
        // 实现自定义 WebView
        self.myWebView()
        // 使用二进制数据流加载本地数据
        self.loadDataFile()
    }
}

自定义UIWebView

    func myWebView(){

        // 初始化 WebView
        webView = UIWebView(frame: self.view.bounds)

        // 设置代理
        webView.delegate = self

        // 检车 WebView 里显示的内容, 符合条件就高亮显示
        webView.dataDetectorTypes = UIDataDetectorTypes.All

        //添加到 self.view
        self.view.addSubview(webView)
    }

使用URL加载本地的数据

    // 1.使用 URL 请求数据
    func loadFile() {
        // 1.设置 URL 地址
        // 应用场景: 加载从服务器下载的文件, 比如 PDF, 或者word, 图片等等文件
        let path = NSBundle.mainBundle().URLForResource("华为软件编程规范总则.doc", withExtension: nil)

        // 设置请求 URl
        let request = NSURLRequest(URL: path!)

        // 发送请求
        webView.loadRequest(request)
    }

使用二进制数据流加载数据

    // 2.使用同步请求请求数据
    func loadDataFile() {
        // 1.设置 URL 地址
        // 应用场景: 加载从服务器下载的文件, 比如 PDF, 或者word, 图片等等文件
        let path = NSBundle.mainBundle().URLForResource("华为软件编程规范总则.doc", withExtension: nil)

        // 2.设置请求 URl
        let request = NSURLRequest(URL: path!)

        // 3.设置服务器响应对象
        var response: NSURLResponse?

        // 4.从服务器取出的 NSData 数据
        let data = NSURLConnection.sendSynchronousRequest(request, returningResponse: &response, error: nil)

        // 5.发送 NSData 同步数据请求
        // 第一个参数是: NSData, 第二个参数是:NSURLResponse, 第三个参数是: UTF8编码, 第四个参数暂时无需理会
        webView.loadData(data, MIMEType: response?.MIMEType, textEncodingName: "UTF8", baseURL: nil)

        println(response?.MIMEType)
    }

使用HTML请求数据

    // 3.使用 HTML 请求数据
    func loadHTML() {
        // 应用场景: 截取网页中得某一部分显示
        // 例如: 网页的完整内容中包含广告! 加载完页面之后, 把广告这一部分的 HTML 页面删除, 然后再加载
        // 很多新闻类的应用都在使用
        webView.loadHTMLString("<p>abcef</p>", baseURL: nil)
    }

最终效果过于繁琐, 这里就不展示了

好了, 这次我们就讲到这里, 下次我们继续~~

posted @ 2015-05-01 20:05  背着吉他去流浪  阅读(525)  评论(0编辑  收藏  举报