将UIView转换为CALayer

时间:2016-02-15 16:26:21

标签: objective-c swift uiview transform calayer

我有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

1 个答案:

答案 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;您可以将视图的仿射变换直接应用于另一层。