gpt4 book ai didi

iphone - UIPageViewController 与 UIViewControllerInteractiveTransitioning

转载 作者:IT王子 更新时间:2023-10-29 08:04:05 24 4
gpt4 key购买 nike

一个简单的问题,我已经围绕 UIViewController 之间的自定义导航/转换进行了大量探索,但不清楚以下内容:

我正在寻找类似于 UIPageViewController 提供的行为(通过内容“页面”向前和向后导航的非基于堆栈的行为)。但我希望能够自定义过渡,并且我希望过渡与自定义 UIPanGestureRecognizer 交互链接。

似乎 UIViewControllerInteractiveTransitioning 协议(protocol)提供了一些我想要的(交互性、自定义转换)。但是因为仅使用 presentViewController:animated:dismissViewControllerAnimated: 调用转换,它似乎是专为使用基于堆栈的导航而构建的(即 UINavigationControllerUITabBarController,模态呈现)。也就是说,它似乎不会与 UIPageViewController 之类的东西一起玩。

如果我使用 UIViewController 包含来构建一个类似于 UIPageViewController 的自定义容器(参见正在进行的演示 here),我可以集成 UIViewControllerInteractiveTransitioning 加入协议(protocol)以插入转型?还是我需要自己滚动这些(目前我有一个粗略的交互式过渡手动实现)?

最佳答案

我在我的应用程序中做了很多大多数开发人员回避的自定义动画,因为我在我的工作中使用了很多 UIViewControlloer Containment。

这是获得您正在寻找的过渡的最简单方法。

以下是我的做法:

  1. 创建一个基础 View Controller ;让我们称之为 MainViewController。它将引用所有其他 View Controller 并保存转换的逻辑。它还应遵循我们将定义为 ViewXControllerDelegate 的协议(protocol)。

  2. 创建您的其他 View Controller ;让我们称它们为 View1Controller、View2Controller、View3Controller。添加它们每个的实例作为 MainViewController 的私有(private)属性。在 MainViewController 的 init 方法中,实例化它们并将它们的 View 添加为 MainViewController View 的 subview 。应该看起来像这样:

    self.v1c = [[View1Controller alloc]init];
    [self addChildViewController:self.v1c];
    [self.v1c didMoveToParentViewController:self];

    //Setup each subview so that its frame makes it off screen or
    //On screen depending on the app state and where you want each
    //subview to animate to/from

    [self.view addSubview:self.v1c.view];

    ....
  3. 在每个 ViewXController 中设置一个 UIPanGestureRecognizer,将其目标和选择器设置为父 View Controller (MainViewController)。

  4. 处理您的 MainViewController 类中的所有逻辑,您将滑动距离、应用程序状态、每个 View 的位置都考虑在内(使用 ViewXController 中的辅助属性,例如“inactiveFrame”或“activeFrame”,其中动画它们之间的变化基于平移手势中发生的移动百分比。

关于iphone - UIPageViewController 与 UIViewControllerInteractiveTransitioning,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19010227/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com