所以我使用的UIPageviewController包含各种新闻文章。这些文章呈现在不同长度的UIWebview上,每个UIWebview都包含在UIScrollview中。加载第一篇文章后,一切正常,用户可以在页面上下滚动并阅读整篇文章。但是,当用户向左或向右滑动以查看下一篇文章时,该页面上的UIScrollview将调整为仅调整屏幕的高度,因此仅滚动才能反弹。我可以说UIWebview比显示的更长,因为我已经打印了它的高度,滚动时,你可以看到文章继续。此外,当您向后滑动到初始文章View时,此UIScrollview也会调整为仅屏幕大小。
UIWebView的内容是在ArticleViewController的init方法中加载的,然后在webViewDidLoad方法中调整大小,如下所示:
CGRect frame = aWebView.frame;
frame.size.height = 1;
aWebView.frame = frame;
CGSize fittingSize = [aWebView sizeThatFits:CGSizeZero];
frame.size = fittingSize;
aWebView.frame = frame;
这似乎有效,但告诉我你是否认为我应该改变它。
要查看每篇文章,请从呈现每篇文章的UITableview中单击它。在DidSelectRowAtIndexPath方法中,我设置了UIPageViewController,如下所示:
UIPageViewController *articlesPageViewController = [[UIPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStyleScroll navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal options:nil];
articlesPageViewController.dataSource = self;
articlesPageViewController.delegate = self;
NVM!解决方案正在关闭UIScrollview的自动布局!谢谢大家!
答案 0 :(得分:0)
(void)webViewDidFinishLoad:(UIWebView *)aWebView {
CGRect frame = aWebView.frame;
frame.size.height = 1;
aWebView.frame = frame;
CGSize fittingSize = [aWebView sizeThatFits:CGSizeZero];
frame.size = fittingSize;
aWebView.frame = frame; NSLog(@"size: %f, %f", fittingSize.width, fittingSize.height);
}
获取webview的高度,然后设置scrollview的内容大小
或尝试这种方式:
CGFloat height = [[myWebView stringByEvaluatingJavaScriptFromString:@"document.height"] floatValue];
CGFloat width = [[myWebView stringByEvaluatingJavaScriptFromString:@"document.width"] floatValue];
CGRect frame = myWebView.frame;
frame.size.height = height + 125.0;
frame.size.width = width;
myWebView.frame = frame;
mainScrollView.contentSize = myWebView.bounds.size;