为什么我的UIPageViewController在卷曲过渡期间自行裁剪?

时间:2013-04-21 03:28:50

标签: iphone ios objective-c uipopovercontroller uipageviewcontroller

在StoryBoard中,我设置了两个视图控制器:

  • PageViewRootViewController - 这只是空白(在故事板中),因为所有内容都是以编程方式设置的。

  • VillagerTextViewController - Storyboard设置布局

此外,我有一个ModelController(NSObject)作为数据源。

一切都很好。我可以在页面之间转换,没有警告或错误,也没有崩溃。

但是,转换时,页面底部会被裁剪掉。我一直试图修复它无济于事。

我无法发布图片http://s10.postimg.org/qbjlat649/Screenshot_2013_04_20_22_12_04.png

UIPageViewController是在PageViewRootViewController的viewDidLoad方法中创建的:

- (void)viewDidLoad
{
    [super viewDidLoad];

    if (!pageViewController) {
        NSDictionary *options = [NSDictionary dictionaryWithObject:[NSNumber numberWithInt:UIPageViewControllerSpineLocationMin] forKey:UIPageViewControllerOptionSpineLocationKey];

        self.pageViewController = [[UIPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStylePageCurl navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal options:options];
        self.pageViewController.delegate = self;

        VillagerTextViewController *startingViewController = [self.modelController viewControllerAtIndex:0 storyboard:self.storyboard];
        NSArray *viewControllers = @[startingViewController];
        [self.pageViewController setViewControllers:viewControllers direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:NULL];

        self.pageViewController.dataSource = self.modelController;
        [self.pageViewController.view setClipsToBounds:NO];
        [self addChildViewController:self.pageViewController];
        [self.view addSubview:self.pageViewController.view];

        [self.pageViewController didMoveToParentViewController:self];

        self.view.gestureRecognizers = self.pageViewController.gestureRecognizers;
    }
}

在storyboard中,我将PageViewRootViewController的视图设置为弹出宽度768和高度200.我还将其显示为弹出框。

VillagerTextViewController和ModelController没有与大小,框架或边界明确相关的任何内容(在代码或故事板中)。

感谢任何帮助!

编辑:

修正:

[self.pageViewController.view setFrame:CGRectMake(self.view.bounds.origin.x, self.view.bounds.origin.y, self.view.bounds.size.width, self.view.bounds.size.height+600)];

1 个答案:

答案 0 :(得分:2)

我没有看到你在代码中做了一些关于给UIPageViewController view一个帧的事情。重要的是不要忽略它!我不保证这是您问题的根源,但可能是。

self.pageViewController.view.frame = ???????

这不是出现成为问题的原因是你通过将clipsToBounds设置为NO来掩盖它;因此,你让自己不知道框架在哪里。更好的是,我认为,clipsToBounds设置为NO,但要使框架正确。