gpt4 book ai didi

ios - 用于在 iOS 中实现完全自定义的 containerViewController 的类架构

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:40:13 25 4
gpt4 key购买 nike

我目前正在尝试构建自己的自定义 ContainerViewController。

我非常熟悉 iOS ViewController 包含 API(在 iOS 5 中引入)和新的 iOS7 ViewController Transition API。

在实现我的容器时,我尝试使用 UINavigationController 和 UITabBarController 正在使用的相同模式。

到目前为止,我的容器运行良好,并且正确地使用了动画和交互式过渡。

问题是,我将大量逻辑打包到我的 UIViewController 容器子类中。符合<UIViewControllerContextTransitioning>并使用 iVars 存储该协议(protocol)方法返回的所有值。

动画和交互逻辑已经在另一个类中分离,第三方也可以使用类似于 UINavigationControllerDelegate 的委托(delegate)来提供自己的转换。和 UITabBarControllerDelegate .

我现在想做的是外包 UIViewControllerContextTransitioning到一个单独的类,以创建与 Apple 为其容器 VC 所做的相同的模块化。Apple 提供了一个 UIViewControllerOneToOneTransitionContext (私有(private) API)用于 id<UIViewControllerContextTransitioning>对象交给 UIViewControllerAnimatedTransitioningUIViewControllerInteractiveTransitioning方法。所以他们没有为此使用他们的 UIViewController 子类。 (这就是我现在所做的)

到目前为止,当转换逻辑调用 [updateInteractiveTransition:] 时,我很想保留我当前的结构。 , [completeTransition:]等,在上下文中,这些调用是直接在我的 containerController 上进行的,然后它可以通过更新其 View 中的其他元素来响应。 (就像 UINavigationController 在您调用 [updateInteractiveTransition:] 时所做的那样,它正在更新 NavigationBar 的内容(交叉淡入淡出))。

在另一个类中外包上下文转换逻辑意味着:

  • 提供 View Controller 和框架等,它们保存在我的容器的堆栈中,从容器到上下文对象,因为上下文需要将它们提供给转换逻辑。
  • 从容器上的上下文对象调用转换回调,因为上下文对象是从转换逻辑接收它们的对象。

由于 Apple 使用这种类关系,我想它一定有一些优势。目前,我不知道是否应该保留我的实现,或者尝试使其像 Apple 提供的容器一样模块化。

另见 SO - Question我问了同样的事情。 (更像是一个回答问题,对此感到抱歉:/)

当我们谈到这个话题时:是否可以让我的容器与 UIPercentDrivenInteractiveTransition 一起工作?文档说它在关键帧中剪切由 transitionAnimator 执行的动画并自动一步一步地“重播”动画过渡,所以我怀疑它可以与自定义容器一起使用。

感谢您的帮助!

最佳答案

Apple 使用大量符合某些协议(protocol)的小类来交接工作。分而治之。看看例如 UITableView 操作或 Collection View 的方式。他们确实将事物分成尽可能小的 block ,并为每个 block 提供一些通用对象。这些对象只符合某些协议(protocol)。

  • 不要强制人们继承。
  • 创建履行特定角色的类必须遵守的协议(protocol)。
  • 您要在其中创建可执行特定操作的现成对象 - 返回对象的 id 类型,而不是类对象。这是使事情足够简单和灵活的唯一方法。苹果甚至使用既是类又是协议(protocol)的 NSObject 来做到这一点。创建自己的协议(protocol)时,请记住使它们符合 NSObject * 协议(protocol)。

您的问题比较长,而且没有提出任何具体问题,所以我希望这能解决您的一些疑虑。如果没有,请随时发帖回应。

关于ios - 用于在 iOS 中实现完全自定义的 containerViewController 的类架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21804111/

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