实现的效果
res.gif
创建各个layer
-(CALayer *)makeLayerWithTranform:(CATransform3D)transform {
CALayer *layer = [CALayer layer];
layer.frame = CGRectMake(0, 0, 100, 100);
layer.contents =(__bridge id) [UIImage imageNamed:@"huhu.jpg"].CGImage;
layer.transform = transform;
return layer;
}
分别添加6个面
CATransformLayer *transformLayer = [CATransformLayer layer];
transformLayer.position = self.view.center;
//正前方
CATransform3D tranform3D = CATransform3DMakeTranslation(0, 0, 50);
[transformLayer addSublayer:[self makeLayerWithTranform:tranform3D]];
//背后
tranform3D = CATransform3DMakeTranslation(0, 0, -50);
tranform3D = CATransform3DRotate(tranform3D, M_PI, 0, 1, 0);
[transformLayer addSublayer:[self makeLayerWithTranform:tranform3D]];
//左边
tranform3D = CATransform3DMakeTranslation(-50, 0, 0);
tranform3D = CATransform3DRotate(tranform3D, M_PI_2, 0, 1, 0);
[transformLayer addSublayer:[self makeLayerWithTranform:tranform3D]];
//右边
tranform3D = CATransform3DMakeTranslation(50, 0, 0);
tranform3D = CATransform3DRotate(tranform3D, -M_PI_2, 0, 1, 0);
[transformLayer addSublayer:[self makeLayerWithTranform:tranform3D]];
//上面
tranform3D = CATransform3DMakeTranslation(0, 50, 0);
tranform3D= CATransform3DRotate(tranform3D, -M_PI_2, 1, 0, 0);
[transformLayer addSublayer:[self makeLayerWithTranform:tranform3D]];
//下面
tranform3D = CATransform3DMakeTranslation(0, -50, 0);
tranform3D= CATransform3DRotate(tranform3D, M_PI_2, 1, 0, 0);
[transformLayer addSublayer:[self makeLayerWithTranform:tranform3D]];
[self.view.layer addSublayer:transformLayer];
实现动画效果
{ CADisplayLink *link = [CADisplayLink displayLinkWithTarget:self selector:@selector(rotate:)];
[link addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes];
}
//方法
-(void)rotate:(CADisplayLink *)link {
static float angle = 0;
angle += 5;
self.transformLayer.sublayerTransform = CATransform3DMakeRotation(angle*M_PI_2/90, 1, 1, 1);
}
网友评论