ios - 如何为 CALayer 的 'position' 属性添加隐式动画?

标签 ios uikit core-animation

**注意:这适用于 iOS,而不是 OS X,因此不会自动设置隐式动画。

我正在尝试将隐式动画添加到 CALayer 的位置属性。

我的(不正确的)代码是这样的:

NSMutableDictionary * actions = [self.view.layer.actions mutableCopy ] ;
if ( !actions ) { actions = [ NSMutableDictionary dictionary ] ; }

CABasicAnimation * anim = [ CABasicAnimation animationForKeyPath:@"position" ] ;

[ actions setValue:anim forKey:@"position" ] ;
self.view.layer.actions = actions ;

我的问题是,我应该在这种情况下使用哪种动画(上面的 anim 属性),即 CABasicAnimationCATransition 以及我应该如何配置它?

感谢

最佳答案

隐式动画只需设置位置属性(即 self.view.layer.position = <new position>; )即可触发,Quartz 将使用您当前的 CATransaction 处理其余部分。设置。

如果您想使用显式动画(您似乎正在尝试这样做),我会使用 CABasicAnimation 并执行类似的操作。

    self.view.layer.position = <new position>;
    CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"position"];
    animation.duration = <duration>;
    animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];
    animation.fromValue = <current position>;
    animation.toValue = <new position>;
    [line addAnimation:animation forKey:@"position"];

关于ios - 如何为 CALayer 的 'position' 属性添加隐式动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9652482/

相关文章:

ios - UINavigationBar 上的灰色阴影

ios - 从 healthkit 查询中排除自己的样本

ios - 如何从 iOS 应用程序启动 Apple Pages 文档?

ios - 如何在 Swift 中创建一个 UILabel 数组

ios - XCode Storyboard - View 出现在横向?

ios - 使用自动布局的可扩展 UITableView 单元会导致 UIViewAlertForUnsatisfiableConstraints

iOS通知中心注册

ios - 在显示层之前应用 CGAffineTransform

iphone - 使用 CAAnimation 启用用户交互?

iphone - 在 iPhone 上创建粒子最有效的方法是什么