WebView中的背景图像显示在模拟器中,但不在设备

时间:2015-08-12 09:56:58

标签: html ios css webview

我正在尝试在UIWebView中显示html文档中的背景图像。当我在iOS模拟器(或谷歌浏览器)中运行时,图像显示完美,文本在顶部,但是如果我在我的iPhone上运行它,文本将显示没有背景图像。

我正在使用此Swift代码将html文档加载到WebView中: webView.loadRequest(NSURLRequest(URL: NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource(htmlCodeFilename, ofType: "html")!)!))

然后我的html看起来像这样:

<!DOCTYPE html>

<html>
<head> 
 <style>

 body {
 background-image: url("img.png");
 background-size: 425px 640px;

 font-size: 130%
 }

 </style>
</head>
<body>

    <p>One evening as the sun went down</p>

</body>
</html>

运行时设备上的字体会增加,所以我知道它正在运行<style>标记。 该图像当前与我的html和swift文件位于同一文件夹中。但令人担忧的是,如果我从项目中完全删除图像,图像仍会显示为模拟器中的背景。只有当我在CSS代码中捏造调用(例如background-image: url("ig.png");)时,背景图像才会出现在模拟器中。

如果有人知道如何在设备上显示图像或知道发生了什么,我真的很感激帮助。

干杯

2 个答案:

答案 0 :(得分:1)

我将本地图像转换为base64 format,它们现在可以在设备上使用。将此视为快速修复。

答案 1 :(得分:0)

当我从项目中完全删除图像时,不确定为什么设备从未识别出图像,或者为什么它仍然出现在模拟器上。

但是,只需在UIImageView后添加WebView即可解决问题。 然后在实现此功能的View Controller中:

func setupWebViewClearBackground(webView: UIWebView) {
    webView.opaque = false
    webView.backgroundColor = UIColor.clearColor()
}

并称之为:

override func viewDidLoad() {
    super.viewDidLoad()
    setupWebViewClearBackground(webView)

    imageView.image = UIImage(named: "Math Background")

    loadHTML(webView,htmlCodeFilename: "htmlCodeFilename")

}

感谢所有的鱼!