我的应用中有UIWebView
,我尝试使用loadHTMLString(_:, baseURL:)
加载存储在应用中String
的HTML。 Web视图始终显示为没有内容的纯灰色矩形。如果我将HTML字符串保存到文件并在Mac上的Safari中加载,页面将按预期呈现。
我想也许是关于HTML的东西,所以我把它缩小到最小的测试,得到了相同的结果:
let myHTMLString = "<html><head></head><body><p>This is a test</p></body></html>"
myWebView.loadHTMLString(myHTMLString, baseURL: nil)
仍为灰色矩形。
我在这里浏览了其他答案,以检查并验证各种可能相关的细节:
UIWebView
。所有内容都在那里,它在iOS应用程序中不可见。UIWebView
委托方法并设置委托属性。我接到webViewDidStartLoad(_:)
,webViewDidFinishLoad(_:)
和webView(_:shouldStartLoadWith:navigationType:)
的电话,在最后一种情况下,我总是返回true
。没有报告错误 - 我从未得到webView(_:didFailLoadWithError:)
。UIWebView
的背景颜色,我会得到不同颜色的矩形,但我仍然无法获得任何可见的网页内容。我错过了什么?这应该是一个微不足道的案例,但我没有可见的内容。
答案 0 :(得分:1)
您收到的错误很奇怪,但您是否已尝试为baseURL
参数设置值?类似于:URL(string: "www.google.com")
答案 1 :(得分:1)
尝试一个新的,空的UIViewController,只需将其作为代码:
import UIKit
class TestViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let newWebView = UIWebView(frame: CGRect(x: 8, y: 8, width: 300, height: 400))
self.view.addSubview(newWebView)
// cyan background html
let myHTMLString = "<html><head></head><body bgcolor=#00ffff><p>This is a test</p></body></html>"
newWebView.loadHTMLString(myHTMLString, baseURL: nil)
}
}
答案 2 :(得分:1)
在调查并尝试新项目(受@ DonMag答案的启发)之后,问题似乎是UIWebView
中包含UIStackView
。虽然网页视图的尺寸是正确的,但这会以某种方式阻止它呈现内容。我在一个简单的测试项目中试过这个并且行为结束了 - 一个普通的UIWebView
本身就可以正常工作,但是堆栈视图中包含的内容并不会呈现其内容,即使它的大小是正确的。
我不知道为什么会这样,或者我是否可以使用这个技巧让网页视图在堆栈视图中正常工作。但原因很清楚,如果不是原因。