ios - 将CALayer与位置一起移动,而不是与值之间移动?

标签 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];
[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"];

最佳答案

您在这里有两个问题,我将以相反的顺序回答:

我真的需要往返动画吗?

不,您不需要那。

CABasicAnimation具有三个一起定义插值方式的属性,分别是fromValuebyValuetoValue。可以按the CABasicAnimation documentation中的“设置插值值”部分中列出的多种不同方式组合它们。最后列出的组合是:


  • 所有属性均为nil。在目标层表示层中的keyPath的先前值和目标层表示层中的keyPath的当前值之间进行插值。


  • 因此,您正在做的事情和所看到的结果是记录在案的行为和工作原理。

    这是使用位置永久移动CALayer的好方法吗?

    这是一个很自以为是的问题,我只能给您我的个人意见,并尝试解释我的理由。

    我个人不喜欢它,因为它不够明确,您需要阅读文档中的这种特殊情况才能知道它是如何工作的。正如您在对问题的评论中所看到的那样,当我初次看到它时,我什至不知道它是如何工作的,而且我认为自己对Core Animation非常熟悉,并且已经阅读了许多文档。

    这一切都取决于您的和您的团队认为最易读和清楚的内容。

    我个人更喜欢显式设置新模型值,然后仅指定fromValue,即这种情况:


  • fromValue是非nil。在`fromValue和属性的当前表示值之间进行插值。
  • 关于ios - 将CALayer与位置一起移动,而不是与值之间移动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21293796/

    相关文章:

    ios - 在AlertView中选择“取消”按钮时,如何从阵列中消除所有AlertView?

    objective-c - NSMenuItem 的自定义 View

    ios - 崩溃 :commitEditingStyle -deleteObject is nil

    ios - map 缩放时,图钉上的弹出框不会移动

    ios - 如何让主线程连续等待两次(对你来说可能很傻)

    objective-c - 如何搜索 UITableView

    iphone - 核心动画: How to make a page flipping transition?

    objective-c - CALayer 未在 UIImageView 中显示

    iphone - setAnimationBeginsFromCurrentState=YES 在 iOS 5 或 iPad 上不起作用吗?

    ios - 动画从左到右继续