Iphone Objective-C CALayer UIView真实旋转

Iphone Objective-C CALayer UIView真实旋转,iphone,objective-c,rotation,calayer,transformation,Iphone,Objective C,Rotation,Calayer,Transformation,我正在尝试旋转UIView对象,如下图所示 我尝试使用CALayer变换,但得到的结果如下: 如果我理解正确,您希望将视图向后命名(进入屏幕),应该能够实现如下功能: float distance = 50; CATransform3D basicTrans = CATransform3DIdentity; basicTrans.m34 = 1.0 / -distance; view.layer.transform = CATransform3DRotate(basicTrans, M_PI

我正在尝试旋转UIView对象,如下图所示

我尝试使用CALayer变换,但得到的结果如下:

如果我理解正确,您希望将视图向后命名(进入屏幕),应该能够实现如下功能:

float distance = 50;

CATransform3D basicTrans = CATransform3DIdentity;
basicTrans.m34 = 1.0 / -distance;
view.layer.transform = CATransform3DRotate(basicTrans, M_PI_4, 1.0f, 0.0f, 0.0f);

要实现此效果,您需要直接操作其中一个转换值(m34)。距离越小,效果越强。然后可以围绕x轴进行旋转变换(倾斜),在本例中为PI/4或45度。您可以使用
度数*M_pi/180.0
计算任意值pi

如何进行转换?我不得不说我没有完全理解这幅图,但是看起来你的缩放而不是旋转。myLayer.transform=cattransferorm3dmakerotation(M_PI/2.8,1.0,0.0,0.0);2.8之后,M_PI只是一个例子。是的,不幸的是,我的视图是缩放而不是旋转的:(我认为你应该绕Z轴(0,0,1)旋转,而不是X轴(1,0,0)。试试看。当视图旋转时,它的高度正在变化。如果我固定了新的(旋转后),我如何计算M_PI值高度我认为三角学给了我们:
angle=M_PI_4-asin(newHeight/height)
其中
newHeight
应该小于
height
但大于零。