我必须在UIWebView
内添加UIScrollView
和一些按钮和标签。我已经看到很多关于如何在UIWebView
内添加UIScrollView
的问题,但不幸的是他们无法帮我完成任务。所以请不要将其标记为重复或其他内容。
理论上,问题可以通过以下步骤解决:
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文档的建议,该文档说明您不应在UIWebView
内使用UIScrollView
。我已经知道了,但我想根据我的项目要求使用它。
答案 0 :(得分:2)
我想我可以在这里说清楚。我认为你混淆了框架大小和内容大小。首先,我将描述方法论,然后提出具体的建议。
<强>方法强>
您有一个webView并且您正确地禁用了它的滚动并将contentSize设置为Web内容的完整大小。您还应将帧大小设置为Web内容的完整大小。然后你将这个addSubview添加到原始的scrollView(0,0)。将scrollView contentSize设置为Web内容的完整大小。将scrollView框架设置为viewController.view的边界。
具体建议
setBackgroundColor:[UIColor redColor]
webView.frame.size
的设置不够大。 答案 1 :(得分:2)
我发现webView不会反映帧大小变化的情况相同,当Jessica提到时,向下滚动时会留下空白。我检查了我的项目,发现我启用了autoLayout功能,所以我找到的解决方案是:
在更改webView框架大小后,使用以下代码添加高度约束到webView:
self.webViewHeightConstraint.constant = fittingSize.height; [webView updateConstraints];
答案 2 :(得分:0)
为了获得UIWebView的内容的高度,我强烈推荐现象&#39;现象&#39;在这里:http://stackoverflow.com (不是接受的答案,下面的答案。) 他/她建议不要使用&#39; CGSizeZero&#39;,并提供更好的解决方案。