这可能吗?我可以更改图层的不透明度和位置(中心),但每当我尝试更改大小或原点时,它都不起作用。
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];
答案 0 :(得分:10)
您既可以更改动画中视图或图层的大小和位置,也可以将其作为动画组进行更改,而不是通过从一系列矩形创建路径。
我提供了一个分组动画的示例,该动画可以在路径中移动视图,同时缩小视图并在我的答案here中降低其不透明度。这通过使用CAKeyframeAnimation用于视图遵循的弯曲路径(仅动画其位置),然后使用基本动画来调整视图边界的大小。你也可以在那里使用CAKeyframeAnimation,为你想要的每个大小的关键帧使用多个CGSize,确保在将它们放入关键帧的NSArray之前将它们包装在NSValue中。
要一次动画两个属性,我将两个动画包装在CAAnimationGroup中,并将其应用于视图的图层。