縮小するオブジェクトをアニメートしています。ユーザーはいつでもボタンを押して、オブジェクトの現在の倍率を取得できます。(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;
}
どんなアドバイスも大歓迎です:)
ありがとう、マイケル。