我有一个相当简单的场景,只有一个UIWebView从包中加载一个html文档。 webView填充顶部布局指南下方的屏幕,并使用建议的约束。它有两个奇怪的行为:
首先将内容向下滚动一下。您可以在下面的第一张图片中看到这一点。粉红色是UIWebView的颜色,而html本身是白色的。
webView的UIScrollView本身有些愚蠢,因为(再次:见图)内容一直滚动到底部,但滚动条不在webView的顶部;它位于内容的顶部。
内容很容易滚动到那个粉红色区域,当内容一直向上滚动时,滚动条位于UIWebView的底部。见第二张图片。
我意识到我可以以编程方式设置contentOffset,但它只能在webViewDidFinishLoad函数中运行,然后它会导致可见的跳转,因为webview首先绘制自己然后滚动,所以这没有用。
这是html(截断空格):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
<link href="help.css" rel="stylesheet" type="text/css" />
</head>
<body>
<h2>Frequently-asked questions</h2>
</body>
</html>
CSS:
@charset "UTF-8";
body {
font-family: "HelveticaNeue-Light", "Helvetica Neue Light", "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif;
font-size: 16px;
}
这是ViewController:
class HelpViewController: UIViewController, UIWebViewDelegate {
@IBOutlet weak var webView: UIWebView!
override func viewDidLoad() {
super.viewDidLoad()
let navController = self.navigationController
navController?.navigationBarHidden = false
}
override func viewWillAppear(animated: Bool) {
loadURL();
}
func loadURL() {
let htmlName = "support";
let url = NSBundle.mainBundle().URLForResource(htmlName, withExtension: "html")
self.webView.delegate = self;
if let goodURL = url {
let request = NSURLRequest(URL: goodURL)
self.webView.loadRequest(request)
}
}
}
似乎问题必须与IB中的某些事情有关,但我看不出是什么。有什么好主意吗?
提前致谢!
-Dave
答案 0 :(得分:0)
所以,我认为我已经在某种程度上弄明白了。我在这个场景中有一个导航栏。我将webview的顶部约束设置为顶部布局指南,这是有道理的,因为这是我想要实际的dang webview的顶部。但是,由于某些原因,它似乎不是我的犹太人,因此我将其更改为绑定到超视图的顶部(场景的主视图)。
这样做:我可以在半透明导航栏下看到粉红色调,但webview的实际内容位置正确。
看起来UIWebView的大小应该是整个视图的大小,如果有导航栏,那么它会缩短自己的滚动视图以允许导航栏的大小,无论是否实际需要/证明调整大小。也许我的应用程序正在做的其他事情正在改变这一点,但如果没有,我认为这不是UIWebView的好行为。
-Dave