ios – 在两个UIViewController的视图之间滑动

我知道我已经问过这个问题了几次,但是我没有经验,不认为我已经得到了正确的答案.

我现在有两个视图控制器,每个都有一个.h文件,一个.m文件一个.xib文件.在.xib文件中,我有一个UIView.如何做到这一点,以便您可以在这两个视图之间滑动?例如,应用程序在第一个视图中打开,然后从右侧向左滑动,并显示一个视图.我想要滑动照片的动画,就像Photos应用程序的动画.

解决方法

虽然您可以自己实现(与UIPanGestureRecognizer或UIScrollView配合使用 custom container view controller),如果使用iOS 6及更高版本,最简单的方法是使用 Page View Controller“滚动”转换样式.

考虑这个故事板:

它由一个页面浏览控制器和两个两页的场景组成.第1页有一个storyboard标识符和一个基类的PageOneViewController.第2页有一个故事板标识符和两个基本类别的PageTwoViewController.

然后我写了一个UIPageViewController子类(可能很明显,这是我为上述故事板的第一个场景指定的类),它具有以下代码

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.dataSource = self;

    [self setViewControllers:@[[self.storyboard instantiateViewControllerWithIdentifier:@"one"]] direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil];
}

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController
{
    if ([viewController isKindOfClass:[PageOneViewController class]])
        return nil;

    return [self.storyboard instantiateViewControllerWithIdentifier:@"one"];
}

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController
{
    if ([viewController isKindOfClass:[PageTwoViewController class]])
        return nil;

    return [self.storyboard instantiateViewControllerWithIdentifier:@"two"];
}

您也可以使用NIB来执行此操作,但它需要编写更多的代码.如果你搜索UIPageViewController XIB,你可能会得到一些点击.

如果您需要在6.0之前支持iOS版本,则必须使用平移手势或滚动视图来执行自定义容器方法.

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...