2010-04-24 140 views
0

我撞我就在这里头撞墙,由于这个问题:iphone - 使CGAffineTransform永久

当我创建一个UIImageView这种观点具有一定的方向和大小。让我们称这个状态为“A”。

该视图响应点击。它可以在屏幕上拖动。

在代码中的某个位置,我将CGAffineTransform应用于该视图。如果仿制品是规模,旋转,翻译或全部组合,则无关紧要。如果变换是绝对的或相对的,也无关紧要。更不用说设备可以改变其方向,并且视图被自动旋转到正确的方向(我们可以说是一种应用于视图的旋转或变换)。

问题是:当我触摸该对象或试图为其透明度或任何其他参数设置动画时,它会“记住”状态“A”,并从该状态执行所有动画,而不是从当前状态执行动画。如果我只是触摸视图,它会立即返回状态“A”。代码本身并没有这样做。这很烦人。如何让视图将其当前的转换状态假定为重置或初始状态?换句话说,我如何让视图忘记过去的转换或状态?

我知道的唯一方法是重新创建视图,但这是一个荒谬的做法。

有没有什么方法可以使我的工作如前所述?

感谢

+0

“我将CGAffineTransform应用于视图”< - 请在代码中显示这意味着什么。 – Ken 2010-04-24 04:40:32

+0

请显示代码.... – 2010-04-24 06:24:12

+0

没有更多信息,我会怀疑您正在操作视图的COPY,或将转换应用于COPY(或新对象)。检查指向您的“A”对象的指针的内存地址,并将其与转换的对象以及拖动的对象进行比较。他们应该都是一样的。 – gnasher 2010-04-24 09:31:00

回答

2

据我所知,所有的SDK动画自动创建一个副本,在副本上进行动画,而隐藏原件。在你的代码中,你将有一个getState行开始,并创建指向动画对象的指针。要在动画例程结束时使其处于永久状态,请将原始对象视图设置为动画视图。

IIRC它是这样的,但我没有我的代码示例在我面前:

myOriginalObject.view = myMnimationObject.view 

显然做到这一点,你释放你的动画之前,但你与转换完成后。