【问题标题】:load html file to UIWebview from documents directory on ios with swift使用swift从ios上的文档目录将html文件加载到UIWebview
【发布时间】:2015-12-15 14:22:49
【问题描述】:

我有一个 html 文件和 html 使用的其他文件(css,.png)保存在文档目录中。如何在 UIWebView 或 wkwebview 中加载此 html 文件 使用 swift 吗?我在 Objective-c 中找到了一些示例,但在 swift 中没有。我对 Objective-c 一无所知..

let path=getCurrenttHtmlStartPage()
var hContent = try String(contentsOfFile: path, encoding: NSUTF8StringEncoding) 
webView!.loadHTMLString(hContent, baseURL: nil)
webView!.hidden=false 

Path 是文档文件夹中的路径。 /Users/pmdevios/Library/.../Documents/Content/Html/index.html.

通过这种方式,html 中的其他文件不会显示(图像),所以我想用另一种方式来做到这一点

webView!.loadFileURL(path, allowingReadAccessToURL: path)

【问题讨论】:

  • 你能把你的代码贴在这里吗..
  • @NimitParekh 到目前为止,我只有这个:'let path=getCurrenttHtmlStartPage() var hContent = try String(contentsOfFile: path, encoding: NSUTF8StringEncoding) webView!.loadHTMLString(hContent, baseURL: nil) webView !.hidden=false ' 。 path 是文档文件夹 (/Users/pmdevios/Library/.../Documents/Content/Html/index.html) 中的路径。这样,html 中的其他文件不会显示(图像)所以我想做使用另一种方式,例如“webView!.loadFileURL(路径,allowReadAccessToURL:路径)”或使用 NSUrlRequest 但我无法使其工作。
  • @Igor 它不重复我要问的是从 Documents 目录加载一个在运行时而不是从应用程序资源中下载的文件!
  • @Nimit Parekh 唯一的区别是相同的 - 如何构建路径,这个问题被苹果很好地记录了

标签: html ios swift uiwebview ios-simulator


【解决方案1】:

使用下面的代码就可以了!

let filePath = (folder as  NSString).stringByAppendingPathComponent(_currentHtmlStartPage!)
var url:NSURL=NSURL(fileURLWithPath:filePath)
var request:NSURLRequest=NSURLRequest(URL:url)
webView!.loadRequest(request)

folder:string,表示文档文件夹中的路径 _currentHtmlStartPage:文件名字符串(例如index.html)

【讨论】:

    【解决方案2】:

    编辑

    1. 使用NSFileManger实例方法URLsForDirectory(inDomains:)获取URL

    2. 将文件名 (myFile.html) 附加到我们从 NSFileManager 返回的 URL

    3. 使用 URL 初始化 NSURLRequest 对象。

    4. 使用UIWebViewWKWebView 类加载请求。


    let fileManager = NSFileManager.defaultManager()
    var URL = fileManager.URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)[0]
    URL = URL.URLByAppendingPathComponent("myFile.html")
    
    let request = NSURLRequest(URL: fileURL)
    webView.loadRequest(request)
    

    【讨论】:

    • 虽然这段代码 sn-p 可以解决问题,including an explanation 确实有助于提高帖子的质量。请记住,您是在为将来的读者回答问题,而这些人可能不知道您提出代码建议的原因。
    • @NathanOliver,我已经编辑了我的答案以包括对代码的解释。感谢链接和反馈。
    【解决方案3】:

    我的头顶:

    if let fileURL = NSBundle.mainBundle().URLForResource("myFile", withExtension: "html") {
        let request = NSURLRequest(URL: fileURL)
        webView.loadRequest(request)
    }
    

    您的 html 和 css 文件中需要一个平面目录结构,因为这就是它们最终在应用程序中的方式。

    【讨论】:

    • 我要问的是从 Documents 目录加载一个在运行时而不是从应用程序资源中下载的文件
    • 原理差不多。
    猜你喜欢
    • 2015-10-20
    • 1970-01-01
    • 1970-01-01
    • 2020-06-02
    • 2013-11-04
    • 2018-11-30
    • 1970-01-01
    • 2014-06-07
    • 2014-12-26
    相关资源
    最近更新 更多