0

StoryBoard では、2 つのビュー コントローラーをセットアップしました。

  • PageViewRootViewController - すべてがプログラムでセットアップされるため、これは (ストーリーボードでは) 空白です。

  • VillagerTextViewController - ストーリーボードがレイアウトを設定します

さらに、データ ソースとして機能する 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;
    }
}

ストーリーボードでは、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)];
4

1 に答える 1