Ios 使用位置移动CALayer,而不是从值移动到值?
这是使用“位置”永久移动CALayer的好方法吗?我真的需要一个往返值动画吗Ios 使用位置移动CALayer,而不是从值移动到值?,ios,objective-c,core-animation,calayer,cabasicanimation,Ios,Objective C,Core Animation,Calayer,Cabasicanimation,这是使用“位置”永久移动CALayer的好方法吗?我真的需要一个往返值动画吗 serveBlock2 = [CALayer layer]; serveBlock2.zPosition = 1; [serveBlock2 setFrame:CGRectMake(screenBounds.size.height/2, 0, screenBounds.size.height/2, screenBounds.size.width)]; [serveBlock2 setOpacity:0.0f]; [se
serveBlock2 = [CALayer layer];
serveBlock2.zPosition = 1;
[serveBlock2 setFrame:CGRectMake(screenBounds.size.height/2, 0, screenBounds.size.height/2, screenBounds.size.width)];
[serveBlock2 setOpacity:0.0f];
[serveBlock2 setBackgroundColor:[UIColor colorWithRed:0.0f green:0.0f blue:0.0f alpha:0.8f].CGColor];
[self.view.layer addSublayer:serveBlock2];
CABasicAnimation *updateCurrentServe2 = [CABasicAnimation animationWithKeyPath:@"position.y"];
serveBlock2.position = CGPointMake((screenBounds.size.height/4)*3, -screenBounds.size.width/2);
[updateCurrentServe2 setTimingFunction:[CAMediaTimingFunction functionWithControlPoints:0.8 :-0.8 :1.0 :1.0]];
[updateCurrentServe2 setDuration:1.5];
[serveBlock2 addAnimation:updateCurrentServe2 forKey:@"serveBlock2 updateCurrentServe2"];
不清楚你在问什么 核心动画实际上不会移动其设置动画的层的位置。它会创建图层正在更改的外观(通过更改图层的表示层),但实际上不会更改基础特性。通常,您要做的是启动动画运行,然后添加额外语句以将要更改的属性设置为其最终值。然后,当动画完成时,对象位于其最终位置 创建CAAnimation时,可以提供from和to值,也可以仅提供to值。如果仅提供“到”值,则它将从以前的位置设置动画到新位置 如果只想移动层,请在没有动画的情况下设置其“位置”属性 如果该层是视图的背景层,它将简单地跳转到它的新位置
如果该层是其他子层,您将获得从旧值到新值的隐式动画。您有两个问题,我将按相反的顺序回答: 我真的需要一个往返值动画吗? 不,你不需要那个 CABasicAnimation有三个属性,它们共同定义了插值的方式,分别是
fromValue
、byValue
和toValue
。它们可以以多种不同的方式组合,在中的“设置插值值”部分中列出。最后列出的组合是:
- 所有属性均为
。在目标层表示层中先前的nil
值和目标层表示层中当前的keyPath
值之间插值keyPath
fromValue
,即这种情况:
是非-fromValue
。在“fromValue”和属性的当前表示值之间插值nil
这行得通吗?(你是在看隐式动画还是真的在看1.5秒长的动画?@DavidRönnqvist我在看1.5秒长的动画。我只是不知道这是否是制作CALayer动画的好方法。