我有一个 UIDynamicAnimator
,其行为:UIPushBehaviour
。我知道 UIView
对象可以通过 initWithReferenceView
成为动态对象。但是动态对象有可能是 UIImageView 吗?如果是这样,怎么办?
(我已经阅读了苹果开发者文档,但我无法真正掌握 UIDynamicAnimator
概念,所以如果这很愚蠢,请原谅我)
最佳答案
没有什么可以“成为动态对象”。这不是思考问题的方式。动态动画师有行为。行为有项目。 View 可以是一个项目。这意味着 UIDynamicAnimator
可以为 UIImageView
制作动画。该 View 不知道它正在被动画化。它只是重复调用 setCenter:
(正如@Rob 在下面指出的,还有 setTransform:
和 bounds
)。 ImageView 和任何其他类型的 View 之间没有区别。
要理解的关键是 UIKit Dynamics 完全倒退了。在 UIView 动画和 Core Animation 中, View 与动画密切相关。您可以向 View 询问其动画、添加和删除动画等。但是 UIKit Dynamics 是粘在 View 上的,并且完全在 View 外部工作。您无法询问 View 是否由 UIKit Dynamics 管理。您只能询问 UIKit Dynamics 它扰乱了哪些 View (而且您不能总是轻易地问这个问题)。
根据我的经验,如果您的动画非常简单,UIKit Dynamics 就可以正常工作。但如果事情很复杂,您可能需要使用 Core Animation(或 SpriteKit,根据您的需要)手动完成。关于它的文档也很少。哦,各种行为的 API 非常不一致。这不是我最喜欢的 Cocoa 框架...
如果您想查看一些示例,您可能需要从 iOS 7 中下载示例代码:PTL ( iosptl.com ) Chapter 19 。它包括将推送动画师放置到 View 上。
关于ios - 动态对象可以是 UIImageView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26371308/