我在我的应用程序中使用UIPageViewController和UITableView。它工作得很好,但是当我翻页时,下一页似乎调整大小(就像它在加载之前太大了):在翻页时,我可以看到桌面视图正在调整大小。当我只滑动一点时(所以我不会转到下一页),下一页的一小部分正在显示。
UItableView在"滑动一点之前"
UITableView"稍微滑动"
当我完成幻灯片时,UITableView将调整大小,结果将再次成为第一张图像。只有眼睛可以看到调整大小(它会发抖)
我的UITableView使用以下约束:
当我删除UITableView约束时,一切正常(除了大于4的iphone,高度和宽度不会动态变化。
我注意到在记录tableView.frame.size.width的宽度时,有时宽度为336而不是320.(当我将约束编辑为-8时,宽度有时是320而不是304)。 / p>
这是我在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在故事板中看起来像这样:
答案 0 :(得分:2)
感谢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;
}