gpt4 book ai didi

ios - 使用 CATransform3DRotate 垂直而不是水平旋转 View 作为立方体?

转载 作者:行者123 更新时间:2023-11-29 12:37:12 26 4
gpt4 key购买 nike

这是我希望我在数学类(class)中多加注意的时候。通过查看一些示例代码,我已经能够使用 UIviews 制作一个立方体,我可以左右滑动。下面的代码是将我的 View 向左旋转。这里的 UIviews 是下面的 view 和 view2。

float rotation = (percent*90.0);
float fProject = (pc_width_page/2.0)*sinf(toRadians(rotation));
view.layer.transform = CATransform3DRotate(CATransform3DTranslate(t, 0.0, 0.0, -1.0*(fProject)), toRadians(rotation), 0.0, 1.0, 0.0);
view.center = CGPointMake((self.frame.size.width/2.0)+fProject, floorf(self.frame.size.height/2.0));
//View2
rotation = (percent*90.0)+90.0;
fProject = (pc_width_page/2.0)*sinf(toRadians(rotation));
view2.layer.transform = CATransform3DRotate(CATransform3DTranslate(t, 0.0, 0.0, -1.0*(fProject)), toRadians(rotation+180), 0.0, 1.0, 0.0);
view2.center = CGPointMake((self.frame.size.width/2.0)-fProject, floorf(self.frame.size.height/2.0));

现在我的问题是,我应该在这里修改什么来制作相同的动画但向上或向下而不是向左旋转。我已经尝试自己更改它,因为我知道对图层进行了平移和旋转,但我没有得到我期望的结果。任何帮助将不胜感激。

最佳答案

根据引用,CATransform3DRotate 将 CATransform3D 对象、角度和旋转矢量的 x、y、z 分量作为输入。

CATransform3D CATransform3DRotate ( CATransform3D t, CGFloat angle, CGFloat x, CGFloat y, CGFloat z );

旋转矢量始终垂直于旋转椭圆,因此如果您想要在 y 轴和 z 轴上移动的旋转(垂直旋转),则旋转矢量为 (x,y,z) = (1.0,0.0, 0.0).

由于在两种情况下(水平和垂直旋转)都在 z 轴上执行投影,因此可以维护此 CATransform3D 对象。

关于中心,投影则应应用于垂直坐标。所以修改后的例子如下:

float rotation = (percent*90.0);
float fProject = (pc_height_page/2.0)*sinf(toRadians(rotation));
view.layer.transform = CATransform3DRotate(CATransform3DTranslate(t, 0.0, 0.0, -1.0*(fProject)), toRadians(rotation), 1.0, 0.0, 0.0);
view.center = CGPointMake(floorf(self.frame.size.width/2.0), (self.frame.size.height/2.0) - fProject);

鉴于pc_width_page是控制旋转投影的因子值,将此值与垂直维度(高度)相关联将是连贯的。

希望对你有帮助

关于ios - 使用 CATransform3DRotate 垂直而不是水平旋转 View 作为立方体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26011075/

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