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