Objective c 单个UIView上的CGAffineTransform序列

Objective c 单个UIView上的CGAffineTransform序列,objective-c,uikit,core-graphics,uiviewanimation,cgaffinetransform,Objective C,Uikit,Core Graphics,Uiviewanimation,Cgaffinetransform,我正在尝试结合cGraffeTransform动画,比如旋转、缩放等等 我的缩放和旋转问题是,如果我按顺序进行,当我缩放视图时,然后旋转;旋转时,视图会返回到其原始比例,而不会停留在我指定的新比例中 如何缩放、旋转、飞行、再次缩放和再次旋转 我学会了使用cGrafineTransformConcat()组合2cGrafineTransform如缩放和旋转 但是,如果我同时执行CGAffineTransform组合,然后继续执行序列,那么是否可以使用concat来实现我想要的呢?或者,即使不使用C

我正在尝试结合
cGraffeTransform
动画,比如旋转、缩放等等

我的缩放和旋转问题是,如果我按顺序进行,当我缩放视图时,然后旋转;旋转时,视图会返回到其原始比例,而不会停留在我指定的新比例中

如何缩放、旋转、飞行、再次缩放和再次旋转

我学会了使用
cGrafineTransformConcat()
组合2
cGrafineTransform
如缩放和旋转


但是,如果我同时执行CGAffineTransform组合,然后继续执行序列,那么是否可以使用concat来实现我想要的呢?或者,即使不使用CGAffineTransformConcat,也有办法做到这一点吗?我希望有人能帮我。谢谢。

我想你正在做的事情是这样的

//scale
view.transform = CGAffineTransformMakeScale(2.0, 2.0);

//rotate
view.transform = CGAffineTransformMakeRotation(M_PI);
但是,这会将变换应用于标识变换,因此旋转时,
scale
将设置回
1.0

所以你需要做一些像

//scale
view.transform = CGAffineTransformScale(view.transform, 2.0, 2.0);

//rotate
view.transform = CGAffineTransformRotate(view.transform, M_PI);

这将接受当前转换并将新转换应用于它。

cGraffineTransformConcat()将转换组合为同时执行,而不是按顺序执行。如果要按顺序执行,必须在第一个动画的完成处理程序中启动下一个动画。嗨,Reinhard。我懂了。但是,如果我重新缩放视图,然后在完成后旋转它,在旋转过程中,视图将恢复到其原始比例。如何实现缩放视图,然后使用我设置的新比例旋转?@Reinhard Männer我更新了我的问题,以清楚地说出我想要什么。我希望你能帮助我。谢谢,你好,福格迈斯特,非常感谢你。我还有最后一个问题,我可以组合2个以上的CGAffineTransform动画吗?就像我希望我的视图同时旋转、缩放和向上飞行一样。我可以在另一个CGAffineTransformConcat中添加一个CGAffineTransformConcat吗?我试过了,但它似乎不起作用,或者可能是我做错了什么。@user1681701是的,一次只建立一个转换。你想加多少就加多少。搬家怎么样?我试着用CGAffineTransformMakeTransform移动,但它消失了。你知道我如何让它同时移动吗?@user1681701你正在使用
MakeTranslation
你需要自己使用
Translate
。另外,要注意你做这些事情的顺序。如果你做2倍的缩放,然后顺时针旋转90度,然后向右平移10点。转换实际上是
20
down
,因为前面的转换更改了正在使用的向量空间。