ios - 需要一种反向 CATransform3d

标签 ios objective-c frame bounds catransform3d

我有两个 View (一个在另一个 View 中)。

super View 是“全屏”的(这意味着它有 frame == screenBoundslayer.transform = CATransform3DIdentity)。所以它看起来像一个矩形。

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

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

我应该对这两个 View 应用哪一个复杂的转换以使 subview “全屏”? (在此转换之后,父 View 将变为梯形,反之亦然)

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

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

当您从 safari 页面 3D 列表中选择一个时会发生。

最佳答案

假设你的内部 View 的变换矩阵只包含仿射变换(即平移、旋转、缩放、反射、剪切)你需要做的就是反转您的内部 View 的转换矩阵以将其转换为外部 View 的边界,假设其框架与外部 View 的框架相同。

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

注意: 转换应用于 -anchorPoint 属性。仅供引用。

关于ios - 需要一种反向 CATransform3d,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30735487/

相关文章:

ios - 如何将上下文旋转90度并将原点设置为左上角?

objective-c - 在 Objective C 中创建小型实用程序类的推荐方法

objective-c - 转换后检查重叠 View

ios - AFNetworking 发布请求

ios - instagram REDIRECT URI ios方案不被接受

ios - Swift - 如何将 ConstUnsafePointer<()> 转换为 CTRunRef

javascript - 使用 addEventListener/attachEvent 注册框架的 onload 事件

ios - 线程 1 : signal SIGABRT in swift

ios - 我如何在 Xcode 中使用 XIB 简单地切换 View Controller ?

javascript - 通过 facebook iframe 中的 javascript 重定向