带有 UITableView 的 UIPageViewController 有奇怪的大小
Posted
技术标签:
【中文标题】带有 UITableView 的 UIPageViewController 有奇怪的大小【英文标题】:UIPageViewController with UITableView has strange size 【发布时间】:2015-01-13 23:27:58 【问题描述】:我在我的应用程序中使用 UIPageViewController 和 UITableView。它工作得很好,但是当我翻页时,下一页似乎被调整了大小(就像它在完成加载之前太大了):翻页时,我可以看到 tableview 正在调整大小。当我只滑动一点(所以我不会翻到下一页)时,会显示下一页的一小部分。
UItableView 之前的“滑动一点点”
UITableView 后“滑动一点点”
当我完成幻灯片时,UITableView 将调整大小,结果将再次成为第一张图片。肉眼只能看到调整大小(它在晃动)
我的 UITableView 使用以下约束:
当我删除 UITableView 约束时,一切正常(除了在大于 4s 的 iphone 上,高度和宽度不会动态变化。
我注意到在记录 tableView.frame.size.width 的宽度时,有时宽度是 336 而不是 320。(当我将约束编辑为 -8 时,宽度有时是 320 而不是 304)。
这就是我在 ViewController 中设置 PageViewController 的方式:
- (PageContentViewController *)viewControllerAtIndex:(NSUInteger)index
if (([self.roosterWeken count] == 0) || (index >= [self.roosterWeken count]))
return nil;
// Create a new view controller and pass suitable data.
PageContentViewController *pageContentViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"PageContentViewController"];
pageContentViewController.rooster = [self.roosterWeken objectAtIndex:index];
pageContentViewController.pageIndex = index;
pageContentViewController.view.frame = self.view.frame;
return pageContentViewController;
@"PageContentViewController" 是一个空的 UIPageViewController,具有以下设置:
PageContentViewController 在故事板中看起来像这样:
【问题讨论】:
我遇到了完全相同的问题!如果我发现了什么,我会告诉你的:) 我已经设法自己解决了!在 -(void)viewDidLayoutSubviews... > 非常感谢!我为此苦苦挣扎了很长时间!有用! :D 【参考方案1】:感谢 Taylor Abernethy Newman 的解决方案:在 PageViewController 中添加以下内容:
- (void)viewDidLayoutSubviews
CGRect frame = self.tableView.frame;
frame.origin.x = 0;
frame.origin.y = 0;
// sometimes the tableView width is higher then its parent
if(frame.size.width > self.view.frame.size.width)
frame.size.width = self.view.frame.size.width;
self.tableView.frame = frame;
【讨论】:
以上是关于带有 UITableView 的 UIPageViewController 有奇怪的大小的主要内容,如果未能解决你的问题,请参考以下文章