2011-09-17 22 views
2

私はストーリーブックアプリケーションを作成しています。これは本質的に短いアニメーションのシリーズです。各「ページめくり」は、ページがズームアウトする短いアニメーションです。 ページ1については、ページ2のアニメーションは、最初のアニメーションがまだ進行中のときにページ2を呼び出すと、右にジャンプしているようです。ページ1はその瞬間ですCGAffineTransformScaleとアニメーションが期待どおりに動作しない

アニメーションページ2は、いつ呼び出されようとも、同じ方法で再生することが理想です。このコードではどのような変更が必要ですか。また

-(IBAction) page1 
{ 
    pageImageNext.bounds = CGRectMake(-240, -370, 1200, 800); 

    [UIImageView animateWithDuration:7.5 delay:2.0 options: UIViewAnimationOptionOverrideInheritedDuration | 
                  UIViewAnimationOptionAllowUserInteraction animations:^{ 
     CGAffineTransform zoom = CGAffineTransformScale(CGAffineTransformIdentity, .4, .4); 
     self.pageImageNext.center = CGPointMake(240,160); 
     self.pageImageNext.transform = zoom; 

    } completion:^(BOOL finished) {}]; 
} 

-(IBAction) page2 
{ 
    pageImageNext.image = [UIImage imageNamed:@"page2.jpg"]; 
    pageImageNext.bounds = CGRectMake(-240, -370, 1200, 800); 

    [UIImageView animateWithDuration:7.5 delay:6.0 options: UIViewAnimationOptionOverrideInheritedDuration | 
                  UIViewAnimationOptionAllowUserInteraction | 
                  UIViewAnimationOptionBeginFromCurrentState animations: ^{ 
     CGAffineTransform zoom2 = CGAffineTransformScale(CGAffineTransformIdentity, .4, .4);  
     self.pageImageNext.center = CGPointMake(240,160); 
     self.pageImageNext.transform = zoom2; 

    } completion:^(BOOL finished) {}]; 
} 

ラインpageImageNext.bounds = CGRectMake(-240, -370, 1200, 800);は、それがUImageViewにリサイズされていないとして、PAGE2には効果がないようだが、むしろそれは、前の変換から現在のサイズだ「継承」しているようです。

ありがとうございます!

答えて

3

私はCore Animationのを使用することによって、私は各IBActionでこのコードを使用することで、正しい効果を得るかということを考え出してきたのに、私は実際には、上記で間違って何が起こっていたか考え出したていない:

pageImageNext.image = [UIImage imageNamed:@"page1.jpg"]; 
pageImageNext.bounds = CGRectMake(-240, -470, 1200, 800); 

CABasicAnimation *zoomOut = [CABasicAnimation animationWithKeyPath:@"transform.scale"]; 
zoomOut.beginTime = CACurrentMediaTime()+4; 
zoomOut.toValue = [NSNumber numberWithDouble:0.4]; 
zoomOut.duration = 8.0; 
zoomOut.fillMode=kCAFillModeForwards; 
zoomOut.removedOnCompletion=NO; 
[pageImageNext.layer addAnimation:zoomOut forKey:@"zoomOut"]; 
関連する問題