百度搜的一張圖,然后自己標(biāo)上每個(gè)面的號(hào)碼,嗯,真貼心.
屏幕快照 2018-12-24 下午6.58.54.png
然后就是利用旋轉(zhuǎn)和平移了:
- (void)viewDidLoad {
[super viewDidLoad];
[self transform3D];
}
- (void)transform3D{
//1
CATransformLayer *cubLayer = [CATransformLayer layer];
CATransform3D ct = CATransform3DMakeTranslation(0, 0, 50);
[cubLayer addSublayer:[self faceWithTransForm:ct]];
//2
ct = CATransform3DMakeTranslation(0, 0, -50);
[cubLayer addSublayer:[self faceWithTransForm:ct]];
//4
ct = CATransform3DMakeTranslation(50, 0, 0);
ct = CATransform3DRotate(ct, M_PI_2, 0, 1, 0);
[cubLayer addSublayer:[self faceWithTransForm:ct]];
//3
ct = CATransform3DMakeTranslation(-50, 0, 0);
ct = CATransform3DRotate(ct, M_PI_2, 0, 1, 0);
[cubLayer addSublayer:[self faceWithTransForm:ct]];
//5
ct = CATransform3DMakeTranslation(0, 50, 0);
ct = CATransform3DRotate(ct, M_PI_2, 1, 0, 0);
[cubLayer addSublayer:[self faceWithTransForm:ct]];
//6
ct = CATransform3DMakeTranslation(0, -50, 0);
ct = CATransform3DRotate(ct, M_PI_2, 1, 0, 0);
[cubLayer addSublayer:[self faceWithTransForm:ct]];
cubLayer.position = self.view.center;
cubLayer.transform = CATransform3DMakeRotation(30, 1, 1, 0);
CATransform3D transA = CATransform3DMakeRotation(60, 1, 1, 1);
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform"];
animation.duration = 2;
animation.autoreverses = YES;
animation.repeatCount = 100;
animation.toValue = [NSValue valueWithCATransform3D:transA];
[cubLayer addAnimation:animation forKey:nil];
[self.view.layer addSublayer:cubLayer];
}
//每一個(gè)面的layer加上transform
- (CALayer *)faceWithTransForm:(CATransform3D )transform{
CALayer *layer = [CALayer layer];
layer.bounds = CGRectMake(0, 0, 100, 100);
layer.backgroundColor = [UIColor colorWithRed: (arc4random() % 256)/255.0 green:(arc4random() % 256)/255.0 blue:(arc4random() % 256)/255.0 alpha:1].CGColor;
layer.transform = transform;
return layer;
}
效果:
屏幕快照 2018-12-24 下午7.00.50.png