我有UIView,我将变换应用于。我试图了解如何获取UIView的轮换并将其应用于 CALayer 。如果我正在打印UIView变换,我会得到这个:
CGAffineTransform(a: 0.977750351365919, b: -0.209771900891948, c: 0.209771900891948, d: 0.977750351365919, tx: 0.0, ty: 0.0)
尽管如此,我无法理解如何应用轮换转换CALayer。
layer.transform
希望获得CATransform3D
。
答案 0 :(得分:2)
您期望发生的事情确实发生了。我运行了这段代码:
self.v.transform = CGAffineTransformMakeRotation(0.5)
以后这段代码:
let t = self.v.layer.transform
print(t)
它打印了这个:
CATransform3D(m11: 0.877582561890373, m12: 0.479425538604203, m13: 0.0, m14: 0.0, m21: -0.479425538604203, m22: 0.877582561890373, m23: 0.0, m24: 0.0, m31: 0.0, m32: 0.0, m33: 1.0, m34: 0.0, m41: 0.0, m42: 0.0, m43: 0.0, m44: 1.0)
这确实是最初应用于视图的仿射变换的CATransform3D形式。如果需要,您现在可以将此相同的变换应用于其他图层。
另请注意,在要应用于图层的变换是仿射变换的特殊情况下,您可以将其直接应用为仿射变换(使用setAffineTransform:
方法)。所以实际上不需要获取视图的图层transform
;您可以将视图的仿射变换直接应用于另一层。