作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有两个 View (一个在另一个 View 中)。
super View 是“全屏”的(这意味着它有 frame == screenBounds
和 layer.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/
我是一名优秀的程序员,十分优秀!