ios - 动态对象可以是 UIImageView

标签 ios objective-c uiimageview uikit-dynamics

我有一个 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/

相关文章:

ios - 有没有办法捏合和缩放以编程方式添加的图像?

ios - 如何检测 iOS 上按钮按下的坐标?

ios - 内购、ID商品

ios - 以编程方式在 UITableViewCell 底部添加 UIView

ios - 当我选择单元格时,UIImageView.image 在我的 UITableViewCell 中为 nil,即使我知道它应该有一个值

ios - 如何在 Objective-C 中进行颜色着色

ios - 代理 : trap returned descriptor for property '0' that is incompatible with the existing property in the proxy target 上的“getOwnPropertyDescriptor”

objective-c - 沙盒化助手应用程序无法启动正确的父应用程序

objective-c - 好友请求实时通知接收者设备

iphone - 使用 CGAffineTransform 时限制 UIImageView 的大小