iphone – UIWebView内部UIScrollView内容大小

我必须在UIScrollView中添加UIWebView和一些按钮和标签.我已经看到很多关于如何在UIScrollView中添加UIWebView的问题但不幸的是他们无法帮助我完成我的任务.所以请不要将其标记为重复或其他内容.

从理论上讲,问题可以通过以下步骤解决:

1)使UIWebView成为UIScrollView的子视图.

2)调用setScrollEnabled:NO,UIWebView禁用其原生滚动.

3)将UIScrollView和UIWebView的内容大小设置为UIWebview中加载的HTML字符串的大小.

我正在使用iOS 6和StoryBoards.我添加了UIWebView作为UIScrollView的子视图.

然后在我的webViewDidFinishLoad中,我使用了以下内容:

 NSString *webHeight = [webView stringByEvaluatingJavaScriptFromString:@"document.height;"];
 NSLog(@"WebView Height %@", webHeight);

这给了我WebView的高度.

在StackOverFlow上,我遇到了以下内容.

    CGRect frame = webView.frame;
    frame.size.height = 1;
    webView.frame = frame;
    CGSize fittingSize = [webView sizeThatFits:CGSizeZero];
    frame.size = fittingSize;
    webView.frame = frame;

    NSLog(@"size: %f, %f", fittingSize.width, fittingSize.height);

然后我将UISCrollView的大小设置为UIWebView的大小:

mainScrollView.contentSize = webView.bounds.size;

我可以向下滚动到底部,但底部有一个空白区域,UIWebView根据加载的html内容的大小没有大小.

看起来UIScrollView已将其大小更改为UIWebView内容的大小,但UIWebView未显示所有内容.我该如何解决这个问题?

请不要向我提供有关Apple文档的建议,该文档说您不应在UIScrollView中使用UIWebView.我已经知道了,但我想根据我的项目要求使用它.

最佳答案
我想我可以在这里说清楚.我认为你混淆了框架大小和内容大小.首先,我将描述方法论,然后提出具体建议.

方法

您有一个webView,并且您正确地禁用了它的滚动并将contentSize设置为Web内容的完整大小.您还应将帧大小设置为Web内容的完整大小.然后你将这个addSubview添加到原始的scrollView(0,0).将scrollView contentSize设置为Web内容的完整大小.将scrollView框架设置为viewController.view的边界.

具体建议

>您发布的“fittingSize”代码看起来不合适.该代码的目的是设置webView的框架.使用NSLog或断点查明是否设置了Web内容的完整大小.
>请注意,您发布的javascript代码的用途与您发布的“fittingSize”代码相同.检查哪一个产生正确的输出.
>尝试找出webView和scrollView的帧大小以帮助您进行调试.最好的方法是设置不同的背景颜色,如下所示:setBackgroundColor:[UIColor redColor]
>我最好的猜测是webView.frame.size的设置不够大.

转载注明原文:iphone – UIWebView内部UIScrollView内容大小 - 代码日志