带有 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 有奇怪的大小的主要内容,如果未能解决你的问题,请参考以下文章

带有标题视图的 UITableView 不滚动到顶部

带有 UICollectionviewcell 和 UITableviewcell 的 UITableview

UITableView - 插入带有动画问题的行

带有 UIToolBar 的 UITableView

带有滚动背景图案的 UITableView

使带有删除按钮的 UITableView 对所有单元格可见