Нужна помощь, чтобы заставить мою анимацию iPhone работать? - PullRequest
1 голос
/ 16 января 2010

Я новенькая в функции анимации iPhone. Я написал простую тестовую программу для вращения красного прямоугольника; однако анимация вообще не действует. Что не так с моим кодом? Большое спасибо ...

//.h
#import <UIKit/UIKit.h>
#import <QuartzCore/QuartzCore.h>

#define DegreesToRadians(X) (M_PI*X/180.0)

//.m
- (void)viewDidLoad {
    [super viewDidLoad];
    CGRect theRect = CGRectMake(0,0,100,100);
    UIView *theBox = [[UIView alloc] initWithFrame:theRect];
    theBox.backgroundColor = [UIColor redColor];
    [self.view addSubview:theBox];
    CALayer *theLayer = [theBox layer];
    [self spinLayer:theLayer];

}

-(CAAnimation *)animationForSpinning{
    float radians = DegreesToRadians(360);
    CATransform3D theTransform = CATransform3DMakeRotation(radians, 0, 0, 1.0);
    CABasicAnimation *theAnimation = [CABasicAnimation animationWithKeyPath:@"transform"];
    theAnimation.toValue = [NSValue valueWithCATransform3D:theTransform];
    theAnimation.duration = 2;  // 2 seconds
    theAnimation.repeatCount = 10000;
    theAnimation.cumulative = YES;

    return theAnimation;    
}

-(void)spinLayer:(CALayer *)theLayer{
    CAAnimation *spinningAnimation = [self animationForSpinning];
    [theLayer addAnimation:spinningAnimation forKey:@"opacity"];

    // trigger the animation
    theLayer.opacity = 0.99;
}

1 Ответ

1 голос
/ 16 января 2010

Ваша анимация не запущена, потому что Core Animation видит преобразование в 360 градусов, которое совпадает с исходным изображением, поэтому ничего не делает.

Самый простой способ обработки поворота на 360 градусов описан в этом ответе на этом вопросе , где вы настроили свою CABasicAnimation для анимации свойства transform.rotation.z от 0 до 2 * пи радианы.

...