UIWebView内部UIScrollView内容大小

Jes*_*ica 8 iphone xcode uiwebview uiscrollview ios

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

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

1)制作UIWebView子视图UIScrollView.

2)调用setScrollEnabled:NOUIWebView禁用其本土滚动.

3)设置内容的大小UIScrollViewUIWebView内部加载的HTML字符串的大小UIWebview.

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

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

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

这给了我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);
Run Code Online (Sandbox Code Playgroud)

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

mainScrollView.contentSize = webView.bounds.size;
Run Code Online (Sandbox Code Playgroud)

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

在此输入图像描述

貌似UIScrollView已经改变了其大小的内容的大小UIWebView,但UIWebView没有显示它的全部.我该如何解决这个问题?

请不要咨询我关于苹果的文件,说你不应该使用UIWebViewUIScrollView.我已经知道了,但我想根据我的项目要求使用它.

Ed *_*hin 2

我想我可以在这里阐明一些情况。我认为您混淆了框架大小和内容大小。首先我会描述方法论,然后提出具体建议。

方法

您有一个 webView,并且您正确地禁用了它的滚动并将 contentSize 设置为 Web 内容的完整大小。您还应该将框架大小设置为网页内容的完整大小。然后将Subview 添加到原点(0,0) 处的scrollView 中。将scrollView contentSize 设置为网页内容的完整大小。将scrollView框架设置为viewController.view的边界。

具体建议

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