gpt4 book ai didi

ios - 在从 UITableView 到 UIView 的交互式转换中为 subview 设置动画

转载 作者:技术小花猫 更新时间:2023-10-29 11:03:07 26 4
gpt4 key购买 nike

对于仅限 iOS7 的应用程序,我有一个 UITableView(尽管如果有帮助,将其更改为 UICollectionView 是学术性的),其中的单元格如下所示:

+----------------------------------+=======+
| Label1 | sub- |
| Label2 Label3 | view |
+----------------------------------+=======+

我想转换到第二个 View , subview 缩小到更大,标签位置发生变化,更像这样:

          +----------+
| |
| subview |
| |
+----------+
Label1
Label2
Label3

这类似于 iOS7 日历应用程序,其中 View 在途中对部分进行转换和动画处理。我知道我需要实现 UIViewControllerAnimatedTransitioning,但我在概念上对这样的工作方式有疑问。我是否隐藏单元格的 subview ,用新 View 的 subview 替换它们但在同一个地方,然后为它们设置动画?或者有没有更复杂的方法?任何示例代码将不胜感激,因为我发现的所有示例都没有将 subview 从一个 View 转移到另一个 View 。

预计到达时间:我想得越多,我就越想知道:使用流式布局的 UICollectionView 是否可以更好地处理这个问题,并且只是让细节成为将单元格大小动画调整为屏幕的完整大小?

最佳答案

我认为,iOS7 日历动画是通过 Collection View 动画过渡布局完成的,这非常棒,但在这种情况下并不是您想要的。此外,它们似乎让您处于同一个 View Controller 中,这可能不适合您上面描述的主从场景。

我最近一直在研究动画过渡,发现 iOS7 中可用的新快照 View 非常适合此类操作。

我非常喜欢自动布局,但使用约束的过渡动画太复杂了。但是,您可以假设在转换开始时,您的 View 已经布置好,因此您可以应用以下原则:

  • 将传入 View 添加到您的 View 层次结构中
  • 在此之上创建一个空白 Canvas View
  • 创建外出 View 的快照并将其添加到 Canvas
  • 创建传入 View 的快照并将其添加到 Canvas
  • 执行两者之间的动画
  • 移除 Canvas

因为布局已经发生,您可以在这些快照上使用现有 View 的 centerframe 属性,并为它们设置动画。它使代码更易于阅读。这就是 Augie 上面的评论要表达的意思。

在您的情况下,您可以通过将所选单元格的各种 View 绑定(bind)到传入 Controller 的 View 并将它们设置为新位置的动画来获得您想要的效果。

我已经用这个转换制作了一个示例项目,可用 on GitHub .最终效果是这样的:

example video

这只是一个演示如何执行动画的简单示例。在生产代码中,您可能会让参与的 Controller 符合一个协议(protocol),在该协议(protocol)中它们返回多个 View 以用于转换,而不是直接公开属性并将转换绑定(bind)到那些特定的类。

关于ios - 在从 UITableView 到 UIView 的交互式转换中为 subview 设置动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19382895/

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