我正在制作一个缩小的物体。在任何时候,用户都可以点击按钮来获得对象的当前比例因子。 (我首先使用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;
}
任何建议最受赞赏:)
谢谢,迈克尔。答案 0 :(得分:1)
如果你只是在所有轴上均匀地缩放视图,那么缩放值应该等于m11(以及m22)。
我刚刚运行了一个带有代码复制粘贴的示例 - 似乎以下两行是多余的:
CGAffineTransform scaleFactor = CGAffineTransformMakeScale(kScaleX, kScaleY);
imageOutline.transform = scaleFactor;
立即缩小一半(我使用0.5作为缩放值),然后使用动画缩小两倍