我有一个UIWebView
,内容不同(单页).我想找出第CGSize
个内容,以便适当调整父视图的大小.不幸的是,显而易见的-sizeThatFits:
只返回WebView的当前帧大小.
我有一个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);
}
Swift 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
}
我应该指出有another approach个(感谢@GregInYEG)使用JavaScript.不确定哪种解决方案性能更好.
在两个黑客解决方案中,我更喜欢这个.