2010-01-06 11 views
0

Ceci 'mon code dans lequel j'essaye de changer la taille de mon imageView. Si vous pouvez signaler toute erreur, je serai vraiment reconnaissant ..Pourquoi mon CAKeyframeAnimation n'est-il pas exécuté?

UIImageView *imageViewForAnimation = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"ravan.jpg"]]; 
    imageViewForAnimation.alpha = 1.0f; 
    CGSize size1=CGSizeMake(60,60); 
    CGSize size2=CGSizeMake(40,40); 
    CGSize size3=CGSizeMake(20,20); 
    CAKeyframeAnimation *customFrameAnimation = [CAKeyframeAnimation animationWithKeyPath:@"frame"]; 
    NSArray *sizeValues = [NSArray arrayWithObjects:[NSValue valueWithCGSize:size1], [NSValue valueWithCGSize:size2], [NSValue valueWithCGSize:size3], nil]; 
    [customFrameAnimation setValues:sizeValues]; 
    customFrameAnimation.duration=10.0; 
    NSArray *times = [NSArray arrayWithObjects:[NSNumber numberWithFloat:0.0f], [NSNumber numberWithFloat:0.5f], [NSNumber numberWithFloat:1.0f], nil]; 
    [customFrameAnimation setKeyTimes:times]; 
    customFrameAnimation.fillMode = kCAFillModeForwards; 
    customFrameAnimation.removedOnCompletion = NO; 
    [imageViewForAnimation.layer addAnimation:customFrameAnimation forKey:@"customFrameAnimation"]; 
    [self.view addSubview:imageViewForAnimation]; 

Répondre

3

Vous créez un UIImageView, la fixation d'une animation, et il fuit. Vous ne l'attachez jamais à une vue visible. Vous ne devriez même jamais voir cette imageview sur l'écran, et encore moins l'animer.

Si vous souhaitez animer une vue existante, vous devez joindre l'animation à celle-ci, et non créer une nouvelle vue.

+0

Rob, je suis en mesure de voir mon imageView situé dans le coin supérieur gauche en utilisant cela, mais sans l'animation. J'ajoute cette vue à moi-même après l'animation. – neha

+0

Je vois que vous êtes édits; vous fuyez toujours la vue. Cela dit, le premier problème ci-dessus est que vous êtes en train d'animer une propriété CGRect (frame) avec une CGSize. Je suis surpris que vous ne receviez pas d'avertissement dans votre journal d'exécution, mais dans tous les cas, si vous voulez animer une image, vous devez transmettre des CGRects, pas des CGSizes. –

+0

Rob, frame est une propriété dérivée, donc si vous voulez changer quelque chose qui s'y rapporte, comme par ex. pour changer de taille, vous devez fournir valueWithCGSize comme je l'ai fait ici ou si vous voulez changer de position, vous devez fournir valueWithCGPoint, etc. – neha