objective-c - 如何创建 "Add to reading list"动画效果

标签 objective-c ios core-animation

当您将元素添加到阅读列表时,我正在尝试制作类似于 Safari(iPhone) 上的动画效果。它类似于开始从 App Store 应用程序下载项目时出现的:应用程序项目下降到停靠栏以开始下载。 首先它弹起来然后去码头。这是 Apple 在他们的操作系统上使用的非常好的效果。

我在屏幕上有一个 ImageView ,我想将其与这种动画一起放到我的应用程序的工具栏中。

如果有人做过或者知道效果叫什么,请告诉我怎么做。

谢谢。

最佳答案

“添加到阅读列表”在我的手机上没有显示动画,但根据您的描述,它听起来像是 Safari (iPhone) 中的“在后台打开”动画。我的回答描述了那个动画。


几个月前我写了一个类似的东西,其中大部分是可行的,而有些则不是。你的问题告诉我更多的人会知道它是如何做到的 I wrote a blog post about it .我将在此处描述高级方法和挑战,但您可以在那篇博文中阅读更多相关信息。


获取动画内容

如果您选择将屏幕上的 View 动画化到(在您的情况下)工具栏,那么您将只需要访问它的图层。如果您希望保留原始 View 并将视觉副本(如“在后台打开”-Safari 动画)动画化到栏项目,那么您应该创建一个新层并将层的内容绘制到图像中并将该图像设置为您正在制作动画的图层的内容

计算结束位置

动画的开始位置就是 View 的框架。 结束位置非常棘手,因为栏项(工具栏项和选项卡栏项)不是 UIView 子类并且没有公共(public) View 属性。 这会在您稍后想要摇动条形项目时造成问题。

我决定使用一些简单的试探法对结束位置进行视觉近似。如果您事先知道您只会对单个条形项进行动画处理,那么可以将结束位置硬编码到合适的帧。

沿路径设置动画

从开始位置到结束位置移动、缩放和旋转图层没有什么特别之处。 如果您想详细了解我是如何做到的,可以查看我写的帖子。

摇动栏目

如果目前没有大量自定义代码或使用私有(private) API,则无法完成此操作。 由于条形项没有 View 或图层,因此您无法设置动画的可访问图层。 我猜你可以有一个自定义的动画图像,它在动画期间进行摇动和设置,然后设置新图像。绘制到图像中并设置动画的方法效果不佳要么是因为没有可以将其内容绘制到图像中的可访问层(你想要这个是为了工具栏项目和标签栏项目的特殊效果)。

...将所有这些放在一起并根据您的特殊需要对其进行调整,您将拥有一个类似于您正在寻找的动画的动画。

关于objective-c - 如何创建 "Add to reading list"动画效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7916777/

相关文章:

objective-c - 过滤 [NSWorkspace runningApplications] 以仅包含用户应用程序(无守护程序/UIAgents)

ios - 基于 url 参数的两个不同响应的 Restkit 实体关系

ios - 在委托(delegate)方法中使用默认行为对 UITextField 进行子类化的设计方法

ios - UIImage 中的绘图被扭曲

ios - 获取ACAccount Facebook用户全名为null

ios - 如何在 iOS 中连续搜索蓝牙外设

objective-c - 如何从整数中生成 unicode 字符?

ios - Quickblox 聊天 API 中的消息出现延迟

ios - 如何将 CALayer 子类化以用作另一个 CALayer 掩码?

iphone - 使用 CAAnimation 制作图像动画