需要一种反向 CATransform3d

Need a sort of a reverse CATransform3d

我有两个视图(一个在另一个里面)。

超级视图是"fullscreen"(这意味着它有frame == screenBoundslayer.transform = CATransform3DIdentity)。所以它看起来像一个矩形。

子视图具有相同的框架,但也有定义的变换,其中包含平移、旋转、缩放和透视。所以它看起来像一个梯形。

此外,在我的例子中,父帧和子帧不相交。所以父视图看起来像一个矩形,子视图看起来像一个梯形。

我应该对这两个视图应用哪一个复杂变换来制作子视图 "fullscreen"? (此转换后父视图将变为梯形,反之亦然)

如果你更清楚的话,我的意思是这个转换:

http://www.youtube.com/watch?v=bjPQG43c_pE&t=1m00s

当您 select 来自 safari 页面 3D 列表时发生。

假设您的内部视图的变换矩阵仅包含 affine 变换(即平移、旋转、缩放、反射、剪切) 您需要做的就是 invert 你的内部视图的转换矩阵将它转换到外部视图的边界,假设它的框架与外部视图的框架相同。

CATransform3D innerViewTransform = innerView.layer.transform;
outerView.layer.transform = CATransform3DInvert(innerViewTransform);

注意: 变换应用于 -anchorPoint 属性。仅供参考。