【问题标题】:UIPageView horizontal swipe and vertical swipeUIPageView 水平滑动和垂直滑动
【发布时间】:2015-04-14 19:19:37
【问题描述】:

我有以下情况:

在故事板中,我有 9 个视图。 3“章”,每章有2“页”。

当用户向上或向下滑动时,他们可以在第 1 章、第 2 章和第 3 章之间切换。 当用户进入第 1 章、第 2 章或第 3 章并向左滑动时,他们会看到该章中的页面。

有关情节提要的示意图,请参见下图:

所有这些视图都是通过 pageviewcontroller 加载的。

这可以通过 iOS 中的基本滑动手势轻松完成,但我们希望它在您滑动时滚动。

到目前为止我所拥有的:

用户可以通过以下代码在三个章节之间滑动(滚动):

chapters = @[@"H1", @"H2", @"H3"];
UIPageViewController *pageViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"PageViewControllerStart"];
pageViewController.dataSource = self;

// Create all of the view controlers that display each page on the story board
viewControllers = [NSMutableArray array];

for (int i = 0; i < chapters.count; i++) {
    start *vc = [self.storyboard instantiateViewControllerWithIdentifier:chapters[i]];
    vc.index = i;
    [viewControllers addObject:vc];
}

// Set the default page to the first in the array and send it to the page view controller
NSArray *defaultViewController = [NSArray arrayWithObject:viewControllers[slideNum]];

///
pageViewController = [[UIPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStyleScroll navigationOrientation:UIPageViewControllerNavigationOrientationVertical options:nil];

pageViewController.dataSource = self;
pageViewController.view.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height - 0.01);

[pageViewController setViewControllers:defaultViewController direction:UIPageViewControllerNavigationDirectionForward animated:YES completion:nil];
///

    [self addChildViewController:pageViewController];
    [self.view addSubview:pageViewController.view];
    [pageViewController didMoveToParentViewController:self];

此代码使“章节”完美地垂直滚动。

但是我怎样才能在这段代码中实现“页面”,以便当用户在他们所在的章节上向左滑动时它们会水平滚动?

【问题讨论】:

    标签: ios objective-c uipageviewcontroller swipe-gesture


    【解决方案1】:

    我认为您可能应该使用更模块化的故事板,为页面使用一个回收的 VC,您可以加载它的多个副本但分配不同的内容。故事板不适合重复布置相同类型的视图。

    您将需要使用嵌套滚动视图。一个滚动视图上下滚动的章节,其中包含许多左右滚动页面的滚动视图。您可以设置-pagingEnabled 使其正确分页。

    【讨论】: