0

我正在为一个缩小的对象制作动画。在任何时候,用户都可以点击按钮来获取对象的当前比例因子。(我首先使用 CGAffineTransformMakeScale 放大对象,因此当它达到其原始大小时,比例因子应该为 1)。我只是不确定如何从动画 UIImageView 中检索当前的比例因子......这是我的代码:

- (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;
}

任何建议最受赞赏:)

谢谢,迈克尔。

4

1 回答 1

1

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

我刚刚用您的代码复制粘贴运行了一个示例 - 以下两行似乎是多余的:

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

视图立即缩小一半(我使用 0.5 作为比例值),然后用动画再缩小两倍

于 2010-08-16T14:10:55.877 回答