【问题标题】:Edit and Load HTML from local file in Swift在 Swift 中从本地文件编辑和加载 HTML
【发布时间】:2018-12-27 10:15:19
【问题描述】:

我的项目包中存储了一个 .html 文件。当我在 WebView.(UIWebview/WKWebview) 中加载它时,数据已加载,但其中的表结构不可见。表格边框、列、行。这些值只是浮动的。在 Chrome 浏览器中,它可以正常打开。

let myURL = Bundle.main.url(forResource: "prescription", withExtension: "html")
    let myURLRequest:URLRequest = URLRequest(url: myURL!)
    webView.loadRequest(myURLRequest)

Chrome 浏览器

iOS 应用 UIWebView:

Html 页面可以响应以适应任何尺寸,但我无法像 Web 一样正确加载 UIWebview。 我需要将文件存储在本地,因为我需要更改它的值并在 webview 上显示。

【问题讨论】:

  • 试试这个 ....convert 文件到 html 字符串并使用转换后的字符串加载..使用 [webView loadHTMLString:string baseURL:nil]
  • 在 Safari 浏览器中,它有效吗?因为 WKWebView 应该使用 Safari 工具(和内部解析/解释标签)。
  • 你有样式表之类的外部引用吗?
  • @AyushYadav 已使用相同的方式加载了 html。事实上尝试了所有技术。 (直接传html文件路径,转成字符串传)
  • @Larme 是的,它可以正常工作并在 safari 浏览器中正确显示。

标签: html ios swift uiwebview wkwebview


【解决方案1】:

将本地内容加载到WKWebView 时,应使用loadHTMLString(_:baseURL:) 而不是loadRequest。第一个函数允许您提供一个基本 URL,您还可以让它指向包 - 因此您显然需要将所有相关文件添加到您的应用程序包中。

guard let indexPath = Bundle.main.path(forResource: "index", ofType: "html"),
   let content =  try String(contentsOfFile: indexPath, encoding: .utf8),
   let baseUrl = URL(fileURLWithPath: indexPath) else {
        // Error handling
   }
webView.loadHTMLString(content, baseURL: baseUrl)

【讨论】:

    【解决方案2】:

    找到解决方案: 如果您正在应用一些本地 css,其路径在 HTML 文件中。 即。

    1. 将该 css 文件“myDefault.css”添加到您的 xcode 项目目录中。
    2. 将 HTML 转换为字符串,并将 HTML 文件中的 css 路径替换为您的本地路径。 :
    3. 使用基本 url 将 HTML 的内容加载到 UIWebView。 (提供本地文件路径作为baseUrl很重要)

      webView = UIWebView()
      
      let pathToInvoiceHTMLTemplate = Bundle.main.path(forResource: "presc", ofType: "html")
      let pathToHTMLCSS = Bundle.main.path(forResource: "myDefault", ofType: "css")
      do {
          var strHTMLContent = try String(contentsOfFile: pathToInvoiceHTMLTemplate!)
      
          strHTMLContent = strHTMLContent.replacingOccurrences(of: "./assets/stylesheets/myDefault.css", with: pathToHTMLCSS!)
      
      let pdfURL = URL(fileURLWithPath: pathToInvoiceHTMLTemplate!)
      webView.loadHTMLString(strHTMLContent, baseURL: pdfURL)
      
      }catch let err{
          print(err)
      }
      

    【讨论】:

      猜你喜欢
      • 2023-03-11
      • 1970-01-01
      • 2017-12-27
      • 2018-01-29
      • 2020-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-16
      相关资源
      最近更新 更多