Ios 我需要在objective-c中创建一个三维旋转框

Ios 我需要在objective-c中创建一个三维旋转框,ios,objective-c,3d,rotation,Ios,Objective C,3d,Rotation,我需要使用objective-c创建一个3D旋转框(立方体)。我已经阅读了一些教程,但不知道如何正确使用它们来获得类似的内容 有人能指导如何将CAlayer或UIView与CATTransferorM3dRotate和CATTransferorM3dTranslate一起使用以实现此目的吗?四面立方体: CATransform3D pt = CATransform3DIdentity; pt.m34 = -1.0 / 500.0; self.containerView.layer.sublay

我需要使用objective-c创建一个3D旋转框(立方体)。我已经阅读了一些教程,但不知道如何正确使用它们来获得类似的内容

有人能指导如何将CAlayer或UIView与CATTransferorM3dRotate和CATTransferorM3dTranslate一起使用以实现此目的吗?

四面立方体:

CATransform3D pt = CATransform3DIdentity;
pt.m34 = -1.0 / 500.0;
self.containerView.layer.sublayerTransform = pt;

_cubeLayer = [CATransformLayer layer];

CALayer *face1 = [CALayer layer];
face1.backgroundColor = [UIColor redColor].CGColor;
face1.frame = CGRectMake(0, 0, 100, 100);
face1.transform = CATransform3DTranslate(face1.transform, 0, 0, 50);
[_cubeLayer addSublayer:face1];

CALayer *face2 = [CALayer layer];
face2.backgroundColor = [UIColor greenColor].CGColor;
face2.frame = CGRectMake(0, 0, 100, 100);
face2.transform = CATransform3DTranslate(face2.transform, 0, 50, 0);
face2.transform = CATransform3DRotate(face2.transform, M_PI / 2, 1, 0, 0);
[_cubeLayer addSublayer:face2];

CALayer *face3 = [CALayer layer];
face3.backgroundColor = [UIColor yellowColor].CGColor;
face3.frame = CGRectMake(0, 0, 100, 100);
face3.transform = CATransform3DTranslate(face3.transform, 0, -50, 0);
face3.transform = CATransform3DRotate(face3.transform, M_PI / 2, 1, 0, 0);
[_cubeLayer addSublayer:face3];

CALayer *face4 = [CALayer layer];
face4.backgroundColor = [UIColor blueColor].CGColor;
face4.frame = CGRectMake(0, 0, 100, 100);
face4.transform = CATransform3DTranslate(face4.transform, 0, 0, -50);
[_cubeLayer addSublayer:face4];


_cubeLayer.frame = CGRectMake(0, 0, 100, 100);

[self.containerView.layer addSublayer:_cubeLayer];
轮换:

self.cubeLayer.transform = CATransform3DRotate(_cubeLayer.transform, M_PI / 2, 1, 0, 0);
结果: 四面立方体:

CATransform3D pt = CATransform3DIdentity;
pt.m34 = -1.0 / 500.0;
self.containerView.layer.sublayerTransform = pt;

_cubeLayer = [CATransformLayer layer];

CALayer *face1 = [CALayer layer];
face1.backgroundColor = [UIColor redColor].CGColor;
face1.frame = CGRectMake(0, 0, 100, 100);
face1.transform = CATransform3DTranslate(face1.transform, 0, 0, 50);
[_cubeLayer addSublayer:face1];

CALayer *face2 = [CALayer layer];
face2.backgroundColor = [UIColor greenColor].CGColor;
face2.frame = CGRectMake(0, 0, 100, 100);
face2.transform = CATransform3DTranslate(face2.transform, 0, 50, 0);
face2.transform = CATransform3DRotate(face2.transform, M_PI / 2, 1, 0, 0);
[_cubeLayer addSublayer:face2];

CALayer *face3 = [CALayer layer];
face3.backgroundColor = [UIColor yellowColor].CGColor;
face3.frame = CGRectMake(0, 0, 100, 100);
face3.transform = CATransform3DTranslate(face3.transform, 0, -50, 0);
face3.transform = CATransform3DRotate(face3.transform, M_PI / 2, 1, 0, 0);
[_cubeLayer addSublayer:face3];

CALayer *face4 = [CALayer layer];
face4.backgroundColor = [UIColor blueColor].CGColor;
face4.frame = CGRectMake(0, 0, 100, 100);
face4.transform = CATransform3DTranslate(face4.transform, 0, 0, -50);
[_cubeLayer addSublayer:face4];


_cubeLayer.frame = CGRectMake(0, 0, 100, 100);

[self.containerView.layer addSublayer:_cubeLayer];
轮换:

self.cubeLayer.transform = CATransform3DRotate(_cubeLayer.transform, M_PI / 2, 1, 0, 0);
结果: 四面立方体:

CATransform3D pt = CATransform3DIdentity;
pt.m34 = -1.0 / 500.0;
self.containerView.layer.sublayerTransform = pt;

_cubeLayer = [CATransformLayer layer];

CALayer *face1 = [CALayer layer];
face1.backgroundColor = [UIColor redColor].CGColor;
face1.frame = CGRectMake(0, 0, 100, 100);
face1.transform = CATransform3DTranslate(face1.transform, 0, 0, 50);
[_cubeLayer addSublayer:face1];

CALayer *face2 = [CALayer layer];
face2.backgroundColor = [UIColor greenColor].CGColor;
face2.frame = CGRectMake(0, 0, 100, 100);
face2.transform = CATransform3DTranslate(face2.transform, 0, 50, 0);
face2.transform = CATransform3DRotate(face2.transform, M_PI / 2, 1, 0, 0);
[_cubeLayer addSublayer:face2];

CALayer *face3 = [CALayer layer];
face3.backgroundColor = [UIColor yellowColor].CGColor;
face3.frame = CGRectMake(0, 0, 100, 100);
face3.transform = CATransform3DTranslate(face3.transform, 0, -50, 0);
face3.transform = CATransform3DRotate(face3.transform, M_PI / 2, 1, 0, 0);
[_cubeLayer addSublayer:face3];

CALayer *face4 = [CALayer layer];
face4.backgroundColor = [UIColor blueColor].CGColor;
face4.frame = CGRectMake(0, 0, 100, 100);
face4.transform = CATransform3DTranslate(face4.transform, 0, 0, -50);
[_cubeLayer addSublayer:face4];


_cubeLayer.frame = CGRectMake(0, 0, 100, 100);

[self.containerView.layer addSublayer:_cubeLayer];
轮换:

self.cubeLayer.transform = CATransform3DRotate(_cubeLayer.transform, M_PI / 2, 1, 0, 0);
结果: 四面立方体:

CATransform3D pt = CATransform3DIdentity;
pt.m34 = -1.0 / 500.0;
self.containerView.layer.sublayerTransform = pt;

_cubeLayer = [CATransformLayer layer];

CALayer *face1 = [CALayer layer];
face1.backgroundColor = [UIColor redColor].CGColor;
face1.frame = CGRectMake(0, 0, 100, 100);
face1.transform = CATransform3DTranslate(face1.transform, 0, 0, 50);
[_cubeLayer addSublayer:face1];

CALayer *face2 = [CALayer layer];
face2.backgroundColor = [UIColor greenColor].CGColor;
face2.frame = CGRectMake(0, 0, 100, 100);
face2.transform = CATransform3DTranslate(face2.transform, 0, 50, 0);
face2.transform = CATransform3DRotate(face2.transform, M_PI / 2, 1, 0, 0);
[_cubeLayer addSublayer:face2];

CALayer *face3 = [CALayer layer];
face3.backgroundColor = [UIColor yellowColor].CGColor;
face3.frame = CGRectMake(0, 0, 100, 100);
face3.transform = CATransform3DTranslate(face3.transform, 0, -50, 0);
face3.transform = CATransform3DRotate(face3.transform, M_PI / 2, 1, 0, 0);
[_cubeLayer addSublayer:face3];

CALayer *face4 = [CALayer layer];
face4.backgroundColor = [UIColor blueColor].CGColor;
face4.frame = CGRectMake(0, 0, 100, 100);
face4.transform = CATransform3DTranslate(face4.transform, 0, 0, -50);
[_cubeLayer addSublayer:face4];


_cubeLayer.frame = CGRectMake(0, 0, 100, 100);

[self.containerView.layer addSublayer:_cubeLayer];
轮换:

self.cubeLayer.transform = CATransform3DRotate(_cubeLayer.transform, M_PI / 2, 1, 0, 0);
结果:

有一个SceneKit,可用于加载3D对象并旋转它们。这里有一个教程:我已经检查过了,但我不知道是否有办法在立方体的面上添加文本。只需将文本作为纹理添加到立方体中?(这引出了第二个问题)。SceneKit允许您加载3D对象并旋转它们。这里有一个教程:我已经检查过了,但我不知道是否有办法在立方体的面上添加文本。只需将文本作为纹理添加到立方体中?(这引出了第二个问题)。SceneKit允许您加载3D对象并旋转它们。这里有一个教程:我已经检查过了,但我不知道是否有办法在立方体的面上添加文本。只需将文本作为纹理添加到立方体中?(这引出了第二个问题)。SceneKit允许您加载3D对象并旋转它们。这里有一个教程:我已经检查过了,但我不知道是否有办法在立方体的面上添加文本。只需将文本作为纹理添加到立方体中?(这引出了第二个问题)。