基本上,我正在尝试动画化一个云,并在风向改变时更改其速度和/或方向。如果有关系的话,我是从UIViewController控制整个过程的,云是一个UIView,其上有一个CALayer,即云本身。我还尝试了在其上放置UIImageView。
云是UIView,云图像是CALayer。这是我尝试的最复杂的变化之一,我尝试了各种较简单的方法(例如直接询问云,或使用UIView而不是CALayer)。但是,它只返回其最终值。我读到有关此方法从3.2开始出现问题,但在4.2中被修复;然而,当我将部署目标从4.0更改为iOS 4.3时,它并没有被修复。我正在使用4.3基础SDK。
我考虑过的其他几个变体是完全停止动画片刻,然后立即获取位置并启动新动画。但是,我需要知道如何停止块动画,并且我只找到了旧动画系统(commitanimations)的片段。
我最后考虑的是编写自己的类型的动画系统;云将在大约0.08秒的重复NSTimer下运行,并创建一个0.08秒的核心动画每次触发时,其中使用作为属性给出的速度给云。然而,我担心任何这种变化都会具有更低的性能,而我需要它尽可能轻巧,因为我最多同时有20个这些云(有时还带着雨)。
提前感谢!
简而言之,我要做的就是获取动画视图的位置或使用块动画停止动画视图。
以下是完整的故事。我的问题是在动画期间获取云的位置。我正在使用块动画。因为我只知道它应该移动的速度,所以我需要通过使用剩余距离来自己计算时间。我已经尝试了以下代码及其几个变体:
[[Cloud CloudImage]convertPoint:CGPointMake([[[Cloud CloudImage] presentationLayer] position].x, 0) toLayer:self.layer].x
云是UIView,云图像是CALayer。这是我尝试的最复杂的变化之一,我尝试了各种较简单的方法(例如直接询问云,或使用UIView而不是CALayer)。但是,它只返回其最终值。我读到有关此方法从3.2开始出现问题,但在4.2中被修复;然而,当我将部署目标从4.0更改为iOS 4.3时,它并没有被修复。我正在使用4.3基础SDK。
我考虑过的其他几个变体是完全停止动画片刻,然后立即获取位置并启动新动画。但是,我需要知道如何停止块动画,并且我只找到了旧动画系统(commitanimations)的片段。
我最后考虑的是编写自己的类型的动画系统;云将在大约0.08秒的重复NSTimer下运行,并创建一个0.08秒的核心动画每次触发时,其中使用作为属性给出的速度给云。然而,我担心任何这种变化都会具有更低的性能,而我需要它尽可能轻巧,因为我最多同时有20个这些云(有时还带着雨)。
提前感谢!