的webViewDidFinishLoad方法可称为一次以上,并通过sizeThatFits返回第一个值只是最终尺寸的一部分。然后,无论出于何种原因,当webViewDidFinishLoad再次触发时,下一次调用sizeThatFits将不正确地返回它以前的值!对于相同的内容,这会随机发生,就好像它是某种并发问题一样。也许这种行为随着时间的推移而改变,因为我正在为iOS 5构建,并且还发现sizeToFit的工作方式大致相同(尽管以前没有?)
我已经解决了这个简单的解决方案:
- (void)webViewDidFinishLoad:(UIWebView *)aWebView
{
CGFloat height = [[aWebView stringByEvaluatingJavaScriptFromString:@"document.height"] floatValue];
CGFloat width = [[aWebView stringByEvaluatingJavaScriptFromString:@"document.width"] floatValue];
CGRect frame = aWebView.frame;
frame.size.height = height;
frame.size.width = width;
aWebView.frame = frame;
}
夫特(2.2):
FUNC webViewDidFinishLoad(web视图:UIWebView中){
if let heightString = webView.stringByEvaluatingJavaScriptFromString("document.height"),
widthString = webView.stringByEvaluatingJavaScriptFromString("document.width"),
height = Float(heightString),
width = Float(widthString) {
var rect = webView.frame
rect.size.height = CGFloat(height)
rect.size.width = CGFloat(width)
webView.frame = rect
}
}
更新:我发现如评论中所提到的,这似乎没有发现内容缩小的情况。不知道是否所有内容和操作系统版本都是如此,请尝试一下。
请提及您面临的错误或问题。 – iMash 2012-04-24 13:58:44
sizeThatFits不适用于iOS 5当我在iOS 4.3上运行上述代码时,它给了我UIWebView内容的确切高度,但是当我在iOS 5.0上运行此代码时,它提供了UIWebview的高度,而不是UIWebView内容 – 2012-04-24 14:01:16