#import "KDViewController.h"
#import <QuartzCore/QuartzCore.h>
@interface KDViewController ()
{
CALayer *leftLayer;
CALayer *rightLayer;
}
@end
@implementation KDViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
UIImage *src = [UIImage imageNamed:@"1.jpg"];
CGImageRef leftCGImage = CGImageCreateWithImageInRect(src.CGImage, CGRectMake(0.0f, 0.0f, src.size.width * 0.5f, src.size.height));
CGImageRef rightCGImage = CGImageCreateWithImageInRect(src.CGImage, CGRectMake(src.size.width * 0.5f, 0.0f, src.size.width * 0.5f, src.size.height));
CGSize s = src.size;
leftLayer = [CALayer layer];
leftLayer.contents = (id)leftCGImage;
leftLayer.frame = CGRectMake(0.0f, 0.0f, s.width * 0.5f, s.height);
[self.view.layer addSublayer:leftLayer];
rightLayer = [CALayer layer];
rightLayer.contents = (id)rightCGImage;
rightLayer.frame = CGRectMake(s.width * 0.5f, 0.0f, s.width * 0.5f, s.height);
[self.view.layer addSublayer:rightLayer];
leftLayer.position = CGPointMake(0, leftLayer.frame.size.height * 0.5f);
leftLayer.anchorPoint = CGPointMake(0.0f, 0.5f);
rightLayer.position = CGPointMake(rightLayer.frame.size.width * 2, rightLayer.frame.size.height * 0.5f);
rightLayer.anchorPoint = CGPointMake(1.0f, 0.5f);
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tap:)];
[self.view addGestureRecognizer:tap];
[tap release];
}
- (void)tap:(UITapGestureRecognizer *)gesture {
[CATransaction begin];
[CATransaction setAnimationDuration:5];
CATransform3D t = CATransform3DIdentity;
t.m34 = -1 / leftLayer.frame.size.width;
leftLayer.transform = CATransform3DConcat(t, CATransform3DRotate(leftLayer.transform, -M_PI_2, 0, 1, 0));
rightLayer.transform = CATransform3DConcat(t, CATransform3DRotate(rightLayer.transform, M_PI_2, 0, 1, 0));
[CATransaction commit];
}
@end
简单实现了下,只需要传入一张图片即可。对3d矩阵的理解依然不够,尚待后续探索。