【问题标题】:Convert UIView transform to CALayer [closed]将 UIView 转换转换为 CALayer [关闭]
【发布时间】:2016-02-15 16:26:21
【问题描述】:

我有 UIView 我应用了转换。我试图了解如何获取 UIView 的 rotation 并将其应用于 CALayer。如果我正在打印 UIView 转换,我会得到:

CGAffineTransform(a: 0.977750351365919, b: -0.209771900891948, c: 0.209771900891948, d: 0.977750351365919, tx: 0.0, ty: 0.0)

不过,我不明白如何应用 rotation 变换 CALayer。

layer.transform

期待得到CATransform3D。

【问题讨论】:

  • 一个视图是一个层。嗯,它有一层。因此,如果您对 UIView 应用了变换,那么您也将该变换应用到了视图的图层。所以有什么问题?转换已应用。
  • @matt,我正在创建新的 CALayer,与 UIView 上的不一样
  • @matt ,我也需要获取旋转部分
  • 您能否展示一些您尝试过的实际代码,或者这是某种深奥的秘密?
  • @matt 哈哈没有什么秘密,我通常会分享,但这一次只是几行代码,什么都不做。

标签: objective-c swift uiview transform calayer


【解决方案1】:

您期望发生的事情确实发生了。我运行了这段代码:

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

【讨论】:

  • 哦,哈哈!不敢相信我没有考虑过,哈哈。但是如何从所有这些细节中应用轮换?
  • 我不明白你现在在问什么。我相信我回答了你原来的问题。
  • 你确实回答了它(我非常感谢)。 Tho,我还问我如何才能将确切的 rotation 转换应用于 UIView。 CATransform3D 包含多个值。哪一个是轮换? (我希望我现在更清楚了)。谢谢马特!
  • 整件事就是轮换。如果您不了解什么是转换,请阅读developer.apple.com/library/mac/documentation/GraphicsImaging/…
  • 所有的值都是旋转?一些可能,但我很确定它的矩阵、比例等表示
猜你喜欢
  • 2010-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多