从理论上讲,问题可以通过以下步骤解决:
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内容大小全部内容,希望文章能够帮你解决iphone – UIWebView内部UIScrollView内容大小所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)