gpt4 book ai didi

swift - CAShapeLayer 获取当前比例

转载 作者:行者123 更新时间:2023-11-28 07:45:58 25 4
gpt4 key购买 nike

我有一个 CAShapeLayer 可以缩放到一个未知的比例数:

myCAShapeLayer.transform = CATransform3DMakeScale(newScale, newScale, 1)

然后在某个时刻,我必须运行 CABasicAnimation 从当前比例回到 1:

let animation1 = CABasicAnimation(keyPath: "transform.scale")
animation1.fromValue = myCAShapeLayer.value(forKeyPath: "transform.scale") as! CGFloat
animation1.toValue = 1.0
animation1.duration = 0.5
myCAShapeLayer.add(animation1, forKey: nil)

当我将 myCAShapeLayer.value(forKeyPath: "transform.scale") 记录为! CGFloat 在每个 CATransform3DMakeScale 之后,它始终为 1.0,尽管在视觉上该层已按比例放大。

我也试过 myCAShapeLayer.presentation()?.value(forKeyPath: "transform.scale") 作为! CGFloat 及其 1.0

最佳答案

如果我们转到 CATransform3DMakeScale 的声明。我们有这些信息

/* Returns a transform that scales by `(sx, sy, sz)':
* t' = [sx 0 0 0; 0 sy 0 0; 0 0 sz 0; 0 0 0 1]. */
@available(iOS 2.0, *)
public func CATransform3DMakeScale(_ sx: CGFloat, _ sy: CGFloat, _ sz: CGFloat) -> CATransform3D

因此,由于我们知道此转换 矩阵中的哪些索引发生了变化,我们可以得到如下所示的每个索引,

shape.transform = CATransform3DMakeScale(2.09, 4.88, 3.49)
print(shape.transform.m11)
print(shape.transform.m22)
print(shape.transform.m33)

输出:

2.09
4.88
3.49

关于swift - CAShapeLayer 获取当前比例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51033611/

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