cocoa-touch - 一次,CGAffineTransformMakeTranslation: 如何应用两个动画

  显示原文与译文双语对照的内容
0 0

我有一个视图,我想用两种方式来。 首先,我想把它移动到它的y 轴上。 然后,我想放大一下。

但是,在使用下面的代码时,首先移动对象,然后在缩放时移回原来的位置。

是否有一种方法可以同时应用两个转换而不取消第一个转换?

如果这是基本的,但任何帮助都会非常有用 !


 [UIView animateWithDuration:animationDuration
 delay:0
 options:UIViewAnimationOptionCurveEaseIn
 animations:^{

 currentCover.transform = CGAffineTransformMakeTranslation(0, 0-keyboardTop+35);


 }
 completion:^(BOOL finished) {


 [UIView animateWithDuration:animationDuration
 delay:0
 options:UIViewAnimationOptionCurveEaseIn
 animations:^{ 

 [currentCover setTransform:CGAffineTransformMakeScale (1.3, 1.3)];


 }
 completion:^(BOOL finished) { }
 ];



 }
 ];

时间: 原作者:

0 0

你应该把一个变换乘以另一个。 每个变换( 缩放和翻译) 都是变换矩阵。 在使用它们之前,只需将它们组合在一起。 乘法的顺序决定了tranforms应用的顺序。

原作者:
0 0

当我的视图回到原来的位置时,我会。

文档CGAffineTransformMakeTranslation 读取"它从x 和y 值构造一个新的转换矩阵,指定原点的移动量。"我认为它不应用实际转换。

我想你应该通过调用 CGAffineTransformTranslate() 来应用翻译。 至少这对我有用 !

原作者:
0 0

在这里我们将创建两个更改的( CGAffineTransform's ),并将它的应用到视图中。


 CGAffineTransform translate = CGAffineTransformMakeTranslation(0, 0-keyboardTop+35);
 CGAffineTransform scale = CGAffineTransformMakeScale(1.3, 1.3);
 CGAffineTransform transform = CGAffineTransformConcat(translate, scale);

 [UIView animateWithDuration: animationDuration
 delay:0.0
 options:UIViewAnimationOptionCurveEaseIn
 animations:^{
 currentCover.transform = transform;
 }completion:^(BOOL finished){
 }];

...