2009-12-11 17 views
6

これは可能ですか?レイヤの不透明度と位置(中心)を変更できますが、サイズや原点を変更しようとするたびに動作しません。コアアニメーション(CAKeyFrameAnimation)を使用したUIViewのサイズ変更と移動

CAAnimationGroup* anigroup = [CAAnimationGroup new]; 

    CGMutablePathRef thePath = CGPathCreateMutable(); 
    CGPathAddRect(thePath, NULL, CGRectMake(0,0, 320, 480)); 
    CGPathAddRect(thePath, NULL, CGRectMake(location.x - 16,location.y-24, 32, 48)); 
    CGPathAddRect(thePath, NULL, CGRectMake(190, 20, 32, 48)); 


    CAKeyframeAnimation* AniLoc = [CAKeyframeAnimation animationWithKeyPath:@"frame"]; 
    AniLoc.path = thePath; 
    AniLoc.keyTimes= [NSArray arrayWithObjects:[NSNumber numberWithFloat:0.0f], 
              [NSNumber numberWithFloat:0.3f], 
              [NSNumber numberWithFloat:1.0f],nil]; 
    AniLoc.duration = 5; 

    CFRelease(thePath); 

    anigroup.animations = [NSArray arrayWithObjects:AniLoc,nil]; 
    anigroup.duration = 5; 

    [focusview.layer addAnimation:anigroup forKey:nil]; 

答えて

10

あなたは、両方のは、アニメーション内のビューまたは層の大きさや位置を変更することができますが、ない長方形のシリーズからパスを作成することにより、アニメーショングループとしてそうしたいと思うでしょう。

私は答えをhereで縮小して不透明度を下げながら、パスに沿ってビューを移動するグループ化されたアニメーションの例を提供します。これは、ビューが従う(その位置をアニメートする)湾曲したパスに対してCAKeyframeAnimationを使用し、次に基本アニメーションを使用してビューの境界のサイズを調整することによって機能します。また、キーフレームのNSArrayに配置する前にNSValueでラップするようにして、必要なサイズキーフレームごとに複数のCGSizeを使用して、CAKeyframeAnimationを使用することもできます。

2つのプロパティを同時にアニメーション化するには、2つのアニメーションをCAAnimationGroupにラップして、ビューのレイヤーに適用します。

+0

恐ろしく、これは私が探していたものです。ありがとう! – ACBurk

関連する問題