Итак, я прочитал в документации, что использование блоков какCABasicAnimation Проблема
beginAnimation
commitAnimation
обескураживают от os4.0.
Так что я пытался заставить свой код работать с помощью CABasicAnimation. Я хочу добиться, чтобы кадр изображения был изменен по размеру уменьшенного размера, где-то внутри моего представления, до положения полной ширины, например. (0, 120, 320, 240) - на моем iPhone.
То, что я до сих пор:
[CATransaction begin];
[CATransaction setValue:[NSNumber numberWithFloat:1.0] forKey:kCATransactionAnimationDuration];
CABasicAnimation *scalingAnimation;
scalingAnimation = [CABasicAnimation animationWithKeyPath:@"transform"];
scalingAnimation.duration=1.0/2;
scalingAnimation.autoreverses=YES;
scalingAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut];
scalingAnimation.fromValue=[NSValue valueWithCATransform3D:CATransform3DMakeScale(1.0, 1.0, 1.0)];
scalingAnimation.toValue=[NSValue valueWithCATransform3D:CATransform3DMakeScale(4, 4, 1)];
[b.layer addAnimation:scalingAnimation forKey:@"scaling"];
[CATransaction commit];
Мой NeXTstep бы сначала попытаться переместить изображение в центральное положение, то масштабировать его до нужного размера. Однако я сомневаюсь, что я правильно это сделаю. Может кто-нибудь прокомментировать мой код/подход .... есть ли лучший способ?
Спасибо за это Ричардом. Помните, что если вы скопируете и запустили этот код, вы измените эту строку: CABasicAnimation * scaleY = [CABasicAnimation animationWithKeyPath: @ "transform.scale.x"]; сказать «transform.scale.y» – DoctorG
@Doctor: Исправлено это для него. ;) –