gpt4 book ai didi

iphone - 为什么我的 3D 旋转图像与另一幅图像相交?

转载 作者:行者123 更新时间:2023-11-28 23:09:38 25 4
gpt4 key购买 nike

我正在制作一个需要转换图像的应用程序,图像可以放置在 View 中的任何位置。但是我在使用下面的代码进行透视变换时遇到的问题

CATransform3D rotationAndPerspectiveTransform = self.layer.transform;
rotationAndPerspectiveTransform = CATransform3DRotate(rotationAndPerspectiveTransform, 22.5f * M_PI / 180.0f, 0, 1, 0.0f);
self.layer.transform = rotationAndPerspectiveTransform;

效果很好,但是当我尝试将 2D 图像放置在“透视变换”图像 (3D) 上时,2D 图像与 3D 图像相交。它不会出现在 3D 图像上方。

为什么会这样?

最佳答案

如果两个 CALayer 是兄弟,则它们存在于同一个 3-D 空间中。当你像上面那样旋转一层时(我猜你是从 my older answer 中提取的,尽管没有该代码的透视部分),你这样做是关于它的 anchor 。

默认情况下,该 anchor 是图层的中心,因此该图层被 0 Z 平面分割。其中一半低于 0,一半高于 0。

当您创建一个新图层作为原始图层的同级图层时,它位于 Z 坐标 0 处,因此将与旋转图层的中心相交。要将该层放置在现有层之上,您可以将新层的 zPosition 属性设置为足够大的正值(或可能为负值,我一直把它搞混了)以拥有整个层将鼠标悬停在旋转的上方。

另一种可能性是将您希望位于旋转层之前的层作为旋转层超层的兄弟层。在兄弟层的任何 3-D 定位之前,首先遵循层层次结构。

关于iphone - 为什么我的 3D 旋转图像与另一幅图像相交?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8615783/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com