如何在同一个UIImageView上同时旋转和缩放?

时间:2014-04-17 17:36:14

标签: ios objective-c animation uiimageview

我想要完成的是我的Iphone游戏中的设置装置同时发出脉冲和旋转。在下面你可以看到我的缩放动画代码。我尝试了多种方式同时旋转和缩放,但是当我提交一个新动画时,其他动画会停止。 我该如何解决这个问题?

   tt = CGAffineTransformMakeScale(1.01, 1.01);
    CGPoint center2 = gear.center;
    [UIView animateWithDuration:0.66666666666667/4
                     animations:^{

                        gear.center = center2;
                         gear.transform = tt;

                     }
                     completion:^(BOOL finished) {

                         [self method2];

                     }];

2 个答案:

答案 0 :(得分:1)

您是否尝试使用旋转和缩放变换而不是多个动画来设置变换?

CGAffineTransform tt= CGAffineTransformMakeScale(1.01, 1.01);
tt= CGAffineTransformRotate(tt, radians);
CGPoint center2 = gear.center;
[UIView animateWithDuration:0.66666666666667/4
                 animations:^{

                    gear.center = center2;
                     gear.transform = tt;

                 }
                 completion:^(BOOL finished) {

                     [self method2];

                 }];

答案 1 :(得分:0)

您可以使用级联同时旋转,缩放和平移。在这种情况下,您需要将作为齿轮中心的锚点移动到原点,然后进行缩放和旋转,然后将齿轮中心向后移动。 请勿使用tt = tt.xxxedBy()

let anchor = gear.center
var tt = CGAffineTransform(translationX: -anchor.x, y: -anchor.y)
tt = tt.concatenating(CGAffineTransform(rotationAngle: radians))
tt = tt.concatenating(CGAffineTransform(scaleX: 1.01, y:1.01))
tt = tt.concatenating(CGAffineTransform(translationX: anchor.x, y: anchor.y))
// do animation ...

https://medium.com/@chenkaiphy/simultaneously-rotate-scale-and-translate-using-cgaffinetransfrom-f5ad00198adb