2009-12-11 7 views
6

이 작업이 가능합니까? 레이어의 불투명도와 위치 (가운데)를 변경할 수는 있지만 크기 나 원점을 변경할 때마다 작동하지 않습니다.크기 조정 및 코어 애니메이션이있는 UIView (CAKeyFrameAnimation)

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을 사용하고 (위치의 애니메이션을 적용하는 경우에만), 기본 애니메이션을 사용하여 뷰 경계의 크기를 조정함으로써 작동합니다. 거기에 CAKeyframeAnimation을 사용할 수도 있습니다. 원하는 크기의 키 프레임마다 여러 개의 CGSize를 사용하고, NSValue로 감싸서 NSArray 키 프레임에 배치해야합니다.

두 속성을 동시에 애니메이션화하려면 CAAnimationGroup에서 두 애니메이션을 래핑하고 뷰의 레이어에 적용합니다.

+0

굉장한, 이것은 내가 찾고 있었던 것입니다. 감사! – ACBurk

관련 문제