如何在 Swift 3 中加载带有 HTML 的 CSS 文件?

Posted

技术标签:

【中文标题】如何在 Swift 3 中加载带有 HTML 的 CSS 文件?【英文标题】:How can I load the CSS file with HTML in Swift 3? 【发布时间】:2017-07-07 10:15:55 【问题描述】:

我有一个 html 文件在我的设备上可以正常显示,但它没有在我的设备上加载其中的 CSS 文件。当我在浏览器上打开 HTML 时,我的 CSS 工作正常。

这是我的 HTML 代码:

<head>
    <link rel="stylesheet" type="text/css" href="stylesheet.css">
</head>
<body>
    <h1>Prateek Bhatt</h1>
    <br>
    <p>is the greatest</p>
</body>

这是我的名为 stylesheet.css 的 CSS 文件:

body 
    background-color: lightblue;


h1 
    color: navy;
    margin-left: 20px;

这也是 Swift 3 的代码:

class ViewController: UIViewController 

    @IBOutlet var webView: UIWebView!

    override func viewDidLoad() 
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.

        let htmlFile = Bundle.main.path(forResource: "index", ofType: "html")
        let html = try? String(contentsOfFile: htmlFile!, encoding: String.Encoding.utf8)
        webView.loadHTMLString(html!, baseURL: nil)
    

    override func didReceiveMemoryWarning() 
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
        

【问题讨论】:

我也是ios新手,所以不太了解。 【参考方案1】:

按照这四个步骤在WebView 中加载CSS 文件:

第 1 步:Bundle 访问本地CSS 文件。guard let path = Bundle.main.path(forResource: "Style", ofType: "css") else return

第 2 步: 获取String格式的CSS内容。let cssString = try! String(contentsOfFile: path).trimmingCharacters(in: .whitespacesAndNewlines)

第 3 步: 将您的javascript 写在一个字符串中,以便稍后由WebView 评估。let jsString = "var style = document.createElement('style'); style.innerHTML = '\(cssString)'; document.head.appendChild(style);"

第 4 步: 渲染 JavaScript。webView.evaluateJavaScript(jsString, completionHandler: nil)

文档

框架: WebKithttps://developer.apple.com/documentation/webkit/ 班级: WKWebViewhttps://developer.apple.com/documentation/webkit/wkwebview 实例方法: evaluateJavaScript(_:completionHandler:)https://developer.apple.com/documentation/webkit/wkwebview/1415017-evaluatejavascript

【讨论】:

我试过你写的但我得到了这个错误。我在这一行遇到错误- webView.evaluateJavaScript(jsString, completionHandler: nil) 错误是 - 'UIwebView' 类型的值没有成员 'evaluateJavaScript' 请检查编辑部分。

以上是关于如何在 Swift 3 中加载带有 HTML 的 CSS 文件?的主要内容,如果未能解决你的问题,请参考以下文章

在搜索栏iOS swift3中加载带有条目的单元格时,图像无法正确显示

Swift 2 - 无法在单独的 ViewController 中加载 UIWebView

在ios中加载html时如何在wkwebview中隐藏带有src的图像?

HTML/Javascript:如何访问在带有 src 集的脚本标签中加载的 JSON 数据

在 UIScrollView Swift3 中加载 UIViewController

无法在 swift 4 中加载本地 html 文件