CAShapeLayer 获取当前比例
CAShapeLayer get current scale
我有一个 CAShapeLayer
可以缩放到一个未知的比例数字:
myCAShapeLayer.transform = CATransform3DMakeScale(newScale, newScale, 1)
然后在某个时候,我必须 运行 a 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)
当我在每个 CATransform3DMakeScale
之后记录 myCAShapeLayer.value(forKeyPath: "transform.scale") as! CGFloat
时,它始终是 1.0,尽管在视觉上图层被放大了。
我也试过 myCAShapeLayer.presentation()?.value(forKeyPath: "transform.scale") as! 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
因此,正如我们知道矩阵中的 indices
为此 transform
发生了变化,我们可以得到如下每个,
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
我有一个 CAShapeLayer
可以缩放到一个未知的比例数字:
myCAShapeLayer.transform = CATransform3DMakeScale(newScale, newScale, 1)
然后在某个时候,我必须 运行 a 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)
当我在每个 CATransform3DMakeScale
之后记录 myCAShapeLayer.value(forKeyPath: "transform.scale") as! CGFloat
时,它始终是 1.0,尽管在视觉上图层被放大了。
我也试过 myCAShapeLayer.presentation()?.value(forKeyPath: "transform.scale") as! 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
因此,正如我们知道矩阵中的 indices
为此 transform
发生了变化,我们可以得到如下每个,
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