【问题标题】:CATransform3D Split UIView in half with 3D Open Door AnimationCATransform3D 使用 3D 开门动画将 UIView 拆分为两半
【发布时间】:2016-08-02 16:35:16
【问题描述】:

我想知道是否有一种方法可以将 UIView(包括子视图)从中心分成两半,并使其像开门或展开的字母一样具有动画效果。

虽然我知道这可以通过使用 2 个 UIView 一半大小的 UIView 并创建 2 个 CATransform3D 旋转动画来实现,但问题是我有 3 个(动画)子视图需要与 UIView 拆分。

*其中一个子视图是 UIImageView,它正在为 GIF 设置动画,但任何子视图都可以为 GIF 设置动画。

【问题讨论】:

    标签: ios objective-c swift animation catransform3d


    【解决方案1】:

    当然可以创建这样的动画,但没有现成的方法可以做到。您需要编写自定义核心动画代码。

    我要做的是拍摄视图的快照,将该快照拆分为 2 层,然后创建一组 CABasicAnimations 来为开门动画制作动画。

    解释如何做到这一点是一种方式,但是超出了 SO 帖子的范围。

    【讨论】:

    • 但是,我的一个(或全部)UIView 子视图是一个正在运行的 GIF。是否有可能让它继续运行并制作 3D 动画?我确信快照会停止动画,这是我最不想发生的事情。
    • 对,拍摄快照会冻结动画。我不得不考虑另一种方法,以便在运行 GIF 的同时制作“谷仓门”动画。您可能需要为每个 GIF 创建 2 个副本,每个副本都裁剪图像的一半,并分别为它们制作动画。
    • 但是 UIView 动画允许“动画内容”?
    • 我不确定,但我想是的。尝试为显示动画 GIF 的视图制作一个简单的缓慢旋转动画作为测试。
    • 我在制作 CATransform3DRotate 动画时正在制作动画。这就是我想要重现的。在我想要动画的 UIView 上制作 3 层的副本将使动画的内存使用量翻倍。一个正在运行的 GIF 使用 35MB。我有 3 个可以动画的子视图,如果所有子视图都在动画并且我将它们分成 2 个,那么 205MB 已经不算应用程序的内存使用量。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-21
    • 1970-01-01
    • 1970-01-01
    • 2010-10-19
    • 2017-01-18
    • 1970-01-01
    相关资源
    最近更新 更多