UIPageviewController中的UIScrollview在页面翻转后调整大小

时间:2014-06-12 18:44:26

标签: ios objective-c uiwebview uiscrollview uipageviewcontroller

所以我使用的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的自动布局!谢谢大家!

1 个答案:

答案 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;