在Swift中编辑并从本地文件加载HTML

在Swift中编辑并从本地文件加载HTML,html,ios,swift,uiwebview,wkwebview,Html,Ios,Swift,Uiwebview,Wkwebview,我的项目包中存储了一个.html文件。当我在WebView(UIWebview/WKWebview)中加载它时,数据被加载,但其中的表结构不可见。表格边框、列、行。这些值只是浮动的。在Chrome浏览器中,它可以正常打开 let myURL = Bundle.main.url(forResource: "prescription", withExtension: "html") let myURLRequest:URLRequest = URLRequest(url: myURL!)

我的项目包中存储了一个.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页面可以响应任何大小,但我无法将UIWebview作为Web正确加载。
我需要将文件存储在本地,因为我需要更改其值并在webview上显示。

将本地内容加载到
WKWebView
中时,您应该使用
loadHTMLString(uU2;: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)
找到解决方案: 如果您正在应用某些本地css,其路径在HTML文件中。 即

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


  • 尝试此操作…将文件转换为html字符串并使用转换后的字符串加载..在Safari浏览器中使用[webView loadHTMLString:string baseURL:nil]是否有效?因为WKWebView应该使用Safari工具(以及内部解析/解释标记)。是否有样式表之类的外部引用?@AyushYadav使用相同的工具加载html。事实上,我尝试了所有的技巧。(直接传递html文件路径,转换为字符串并传递。)@Larme yes它可以正常工作并在safari浏览器中正确显示。
    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)
    }