0

我正在缩小对象的动画。在任何时候,用户都可以点击按钮来获取对象的当前比例因子。 (我通过使用CGAffineTransformMakeScale缩放对象开始,因此在达到原始大小时缩放因子应为1)。我只是不知道如何从动画的UIImageView目前的规模系数......这是我的代码:从CABasicAnimation获取比例因子

- (void)startShrink { 
    CGAffineTransform scaleFactor = CGAffineTransformMakeScale(kScaleX, kScaleY); 
    imageOutline.transform = scaleFactor; 

    CABasicAnimation *shrink = [CABasicAnimation animationWithKeyPath:@"transform.scale"]; 
    shrink.toValue = [NSNumber numberWithDouble:0.5]; 
    shrink.duration = 2.0; 
    shrink.fillMode=kCAFillModeForwards; 
    shrink.removedOnCompletion=NO; 
    shrink.delegate = self; 

    [imageOutline.layer addAnimation:shrink forKey:@"shrink"]; 
} 

我尝试以下,但我不知道M12是我应该检索值从变换。或者,如果在事实上,这是正确的做法:

- (float)calculateScale { 
    CATransform3D scaleTransform = [(CALayer *)[imageOutline.layer presentationLayer] transform]; 
    float scale = scaleTransform.m12; 
    NSLog(@"Scale: %g", scale); 
    return scale; 
} 

任何意见最赞赏:)

谢谢,迈克尔。

回答

1

如果您只是在所有轴上均匀缩放视图,则缩放值应等于m11(以及m22)。

我只是跑的样本与您的代码复制粘贴 - 它似乎是以下两行是多余的:

CGAffineTransform scaleFactor = CGAffineTransformMakeScale(kScaleX, kScaleY); 
imageOutline.transform = scaleFactor; 

查看立即减半缩水(我用的刻度值0.5),然后缩小两倍更多与动画

+0

大 - m11做的伎俩,谢谢! 这两条线是为了最初将图像按比例缩小4倍,以便在应用动画时,它会从超大尺寸缩小到其原始尺寸的一半。 – Smikey 2010-08-16 14:39:07