从 Swift 中的本地文件编辑和加载 HTML
Edit and Load HTML from local file in Swift
我的项目包中存储了一个 .html 文件。当我在 WebView.(UIWebview/WKWebview) 中加载它时,数据已加载但其中的 table 结构不可见。 table 边框、列、行。这些值只是浮动的。在 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 上显示。
将本地内容加载到 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)
找到解决方案:
如果您正在应用一些本地 css,其路径在 HTML 文件中。
即。
- 将 css 文件 "myDefault.css" 添加到您的 xcode 项目目录。
- 将 HTML 转换为字符串,并将 HTML 文件中 css 的路径替换为您的本地路径。 :
将 HTML 的内容加载到基数为 url 的 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)
}
我的项目包中存储了一个 .html 文件。当我在 WebView.(UIWebview/WKWebview) 中加载它时,数据已加载但其中的 table 结构不可见。 table 边框、列、行。这些值只是浮动的。在 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 上显示。
将本地内容加载到 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)
找到解决方案: 如果您正在应用一些本地 css,其路径在 HTML 文件中。 即。
- 将 css 文件 "myDefault.css" 添加到您的 xcode 项目目录。
- 将 HTML 转换为字符串,并将 HTML 文件中 css 的路径替换为您的本地路径。 :
将 HTML 的内容加载到基数为 url 的 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) }