UITageViewController与UITableView具有奇怪的大小

时间:2015-01-13 23:27:58

标签: ios uitableview ios7 constraints uipageviewcontroller

我在我的应用程序中使用UIPageViewController和UITableView。它工作得很好,但是当我翻页时,下一页似乎调整大小(就像它在加载之前太大了):在翻页时,我可以看到桌面视图正在调整大小。当我只滑动一点时(所以我不会转到下一页),下一页的一小部分正在显示。

UItableView在"滑动一点之前"

UITableView Before

UITableView"稍微滑动"

UITableView After

当我完成幻灯片时,UITableView将调整大小,结果将再次成为第一张图像。只有眼睛可以看到调整大小(它会发抖)

我的UITableView使用以下约束:

UITableView Constraints

当我删除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,具有以下设置:

UIPageViewController settings

PageContentViewController在故事板中看起来像这样:

PageContentViewController

1 个答案:

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