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).

Я просто побежал образец с вашим скопировать код вставили - это, кажется, что следующие 2 строки являются избыточными:

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

Просмотр сразу уменьшается наполовину (я использовал 0,5 для значений шкалы), а затем уменьшается в два раза больше с анимацией

+0

Отличный - m11 сделал трюк, спасибо! Эти две строки предназначены для первоначального масштабирования изображения с коэффициентом 4, так что, когда применяется анимация, он сжимается от негабаритного до половины его первоначального размера. – Smikey

Смежные вопросы