在不改变子层变换的情况下缩放CALayer

时间:2014-11-23 19:23:27

标签: ios calayer quartz-graphics cabasicanimation caanimation

我有一个名为photoLayer的CALayer,它有一个名为imageLayer的子层,其内容是CGImageRef。用户可以在图像和图像中选择裁剪矩形。还可以使用平移/缩放手势进行手指缩放(此选项是使用UIScrollView的另一个UI的一部分)。要使用选定的裁剪矩形和缩放值在imageLayer中显示图像,我将缩放变换应用于imageLayer以选择缩放值。我还调整了imageLayer的position属性,以匹配使用pan / zoom选择的图像裁剪矩形的左上角。这样我就可以正确显示带有裁剪/缩放图像的imageLayer。

但是现在我还需要在中心周围放大photoLayer(即imageLayer的父图层),当我将transform.scale动画应用到photoLayer时,imageLayer不会沿着中心缩放。我期待imageLayer不受超级图层比例动画的影响但事实并非如此。我究竟做错了什么 ?以下是我如何缩放photoLayer:

            CABasicAnimation *scale = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
            [scale setFromValue:[NSNumber numberWithFloat:0.0f]];
            [scale setToValue:[NSNumber numberWithFloat:1.0f]];
            scale.beginTime = startTime;
            scale.duration = 1.f;
            [scale setRemovedOnCompletion:NO];
            [scale setFillMode:kCAFillModeForwards];

            [photoLayer addAnimation:scale forKey:@"scaleUp"];

我真的需要imageLayer跟随photoLayer在中心周围的比例动画。

0 个答案:

没有答案