我有一个UIWebView
具有不同的(单页)内容。我想了解一下CGSize
内容以适当调整我的父母视图的大小。显而易见的-sizeThatFits:
不幸的是只返回 webView 的当前帧大小。
事实证明,我的第一个猜测是使用-sizeThatFits:
并不是完全错误的。它似乎有效,但前提是在发送之前将 webView 的框架设置为最小尺寸-sizeThatFits:
。之后我们可以通过拟合尺寸来纠正错误的框架尺寸。这听起来很糟糕,但实际上并没有那么糟糕。由于我们紧接着进行了两次帧更改,因此视图不会更新,也不会闪烁。
当然,我们必须等到内容加载完毕,所以我们将代码放入-webViewDidFinishLoad:
委托方法。
Obj-C
- (void)webViewDidFinishLoad:(UIWebView *)aWebView {
CGRect frame = aWebView.frame;
frame.size.height = 1;
aWebView.frame = frame;
CGSize fittingSize = [aWebView sizeThatFits:CGSizeZero];
frame.size = fittingSize;
aWebView.frame = frame;
NSLog(@"size: %f, %f", fittingSize.width, fittingSize.height);
}
斯威夫特 4.x
func webViewDidFinishLoad(_ webView: UIWebView) {
var frame = webView.frame
frame.size.height = 1
webView.frame = frame
let fittingSize = webView.sizeThatFits(CGSize.init(width: 0, height: 0))
frame.size = fittingSize
webView.frame = frame
}
我应该指出有另一种方法 https://stackoverflow.com/questions/745160/how-to-determine-uiwebview-height-based-on-content-within-a-variable-height-uita(感谢@GregInYEG)使用 JavaScript。不确定哪种解决方案表现更好。
在两种古怪的解决方案中,我更喜欢这个。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)