gpt4 book ai didi

ios - 获取当前的 CAAnimation 转换值

转载 作者:可可西里 更新时间:2023-11-01 03:04:10 26 4
gpt4 key购买 nike

我想在某个时间点访问获取变换比例的值。这是动画创作:

    CABasicAnimation *grow = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
grow.toValue = @1.5f;
grow.duration = 1;
grow.autoreverses = YES;
grow.repeatCount = HUGE_VALF;
[view.layer addAnimation:grow forKey:@"growAnimation"];

例如,当用户按下按钮时,我想获取 View 的当前大小。记录帧或边界总是返回常量值。任何帮助将不胜感激!

最佳答案

在 Core Animation 中,如果动画在层上“飞行”,则该层具有称为 presentationLayer 的第二层属性。该层包含飞行中动画的值。

已编辑

(向 Mohammed 致敬,他花时间为 Swift 提供了替代答案)

使用这样的代码:

objective-C

CGFloat currentScale = [[layer.presentationLayer valueForKeyPath: @"transform.scale"] floatValue];

swift :

let currentScale = layer.presentation()?.value(forKeyPath: "transform.scale") ?? 0.0

请注意,如果层没有表示层,上面的 Swift 代码将返回 0。这是您应该为之编程的失败案例。最好将其保留为可选并检查是否返回 nil。

编辑#2:

请注意,正如 Kentzo 在他们的评论中指出的那样,从飞行中的动画中读取值将为您提供瞬间的快照。您读取的参数的新值(本例中为 transform.scale)将开始偏离您获得的读数。您应该暂停动画,或者使用您快速读取的值并在每次需要时获取另一个值。

关于ios - 获取当前的 CAAnimation 转换值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20244933/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com