为什么我的动画设置的是沿y轴翻转的,但是实际上翻的时候是水平动?哪位大神帮我看看,是哪里错误?
//
// AFKPageFlipper.m
// AFKPageFlipper
//
// Created by Marco Tabini on 10-10-12.
// Copyright 2010 AFK Studio Partnership. All rights reserved.
//
// Modified by Reefaq Mohammed on 16/07/11.
//
#import "AFKPageFlipper.h"
#import "ColorHelper.h"
#pragma mark -
#pragma mark UIView helpers
@interface UIView(Extended)
//image渲染视图
- (UIImage *) imageByRenderingView;
@end
@implementation UIView(Extended)
//image渲染视图
- (UIImage *) imageByRenderingView {
CGFloat oldAlpha = self.alpha;
self.alpha = 1;
//创建一个基于位图的上下文(context),并将其设置为当前上下文(context)。参数size为新创建的位图上下文的大小。
UIGraphicsBeginImageContext(self.bounds.size);
//渲染一般的操作后的结果
self.layer renderInContext:UIGraphicsGetCurrentContext()];
//从当前上下文中获取一个UIImage对象。
UIImage *resultingImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
self.alpha = oldAlpha;
return resultingImage;
}
@end
#pragma mark -
#pragma mark Private interface
//@interface AFKPageFlipper()
//
//@property (nonatomic,assign) UIView *currentView;
//@property (nonatomic,assign) UIView *newView;
//
//@end
@implementation AFKPageFlipper
#pragma mark -
#pragma mark Flip functionality
@synthesize pageDifference,numberOfPages,animating;
- (void) initFlip {
NSAutoreleasePool* newpool = NSAutoreleasePool alloc] init];
// Create screenshots of view
UIImage *currentImage = self.currentView imageByRenderingView];
UIImage *newImage = self.newView imageByRenderingView];
// Hide existing views
self.currentView setHidden:TRUE];
self.newView setHidden:TRUE];
self.currentView.alpha = 0;
self.newView.alpha = 0;
// Create representational layers
CGRect rect = self.bounds;
//rect.size.width /= 2;
rect.size.height /= 2;
backgroundAnimationLayer = CALayer layer];
backgroundAnimationLayer.frame = self.bounds;
backgroundAnimationLayer.zPosition = -300000;
CALayer *leftLayer = CALayer layer];
leftLayer.frame = rect;
//设置圆角
leftLayer.masksToBounds = YES;
//允许你在图层的边界内容修改图层的contents图片的位置或者伸缩值。
leftLayer.contentsGravity = kCAGravityLeft;
backgroundAnimationLayer addSublayer:leftLayer];
//rect.origin.x = rect.size.width;
rect.origin.y = rect.size.height;
CALayer *rightLayer = CALayer layer];
rightLayer.frame = rect;
rightLayer.masksToBounds = YES;
rightLayer.contentsGravity = kCAGravityRight;
backgroundAnimationLayer addSublayer:rightLayer];
if (flipDirection == AFKPageFlipperDirectionRight) {
leftLayer.contents = (id) ;
rightLayer.contents = (id) ;
} else {
leftLayer.contents = (id) ;
rightLayer.contents = (id) ;
}
self.layer addSublayer:backgroundAnimationLayer];
//rect.origin.x = 0;
rect.origin.y = 0;
flipAnimationLayer = CATransformLayer layer];
flipAnimationLayer.anchorPoint = CGPointMake(0, 0);
flipAnimationLayer.frame = rect;
blankFlipAnimationLayerOnLeft1 = CATransformLayer layer];
blankFlipAnimationLayerOnLeft1.anchorPoint = CGPointMake(1, 1);
blankFlipAnimationLayerOnLeft1.frame = rect;
blankFlipAnimationLayerOnLeft1.zPosition = -250000;
blankFlipAnimationLayerOnRight1 = CATransformLayer layer];
blankFlipAnimationLayerOnRight1.anchorPoint = CGPointMake(0, 0);
blankFlipAnimationLayerOnRight1.frame = rect;
blankFlipAnimationLayerOnRight1.zPosition = 250000;
blankFlipAnimationLayerOnLeft2 = CATransformLayer layer];
blankFlipAnimationLayerOnLeft2.anchorPoint = CGPointMake(1, 1);
blankFlipAnimationLayerOnLeft2.frame = rect;
blankFlipAnimationLayerOnLeft2.zPosition = -260000;
blankFlipAnimationLayerOnRight2 = CATransformLayer layer];
blankFlipAnimationLayerOnRight2.anchorPoint = CGPointMake(0, 0);
blankFlipAnimationLayerOnRight2.frame = rect;
blankFlipAnimationLayerOnRight2.zPosition = 350000;
self.layer addSublayer:flipAnimationLayer];
if (pageDifference > 1) {
self.layer addSublayer:blankFlipAnimationLayerOnLeft1];
self.layer addSublayer:blankFlipAnimationLayerOnRight1];
if (pageDifference > 2) {
self.layer addSublayer:blankFlipAnimationLayerOnLeft2];
self.layer addSublayer:blankFlipAnimationLayerOnRight2];
}
}
// start
CALayer *blankBackLayerForLayerLeft = CALayer layer];
blankBackLayerForLayerLeft.frame = blankFlipAnimationLayerOnLeft1.bounds;
blankBackLayerForLayerLeft.doubleSided = NO;
blankBackLayerForLayerLeft.masksToBounds = YES;
blankFlipAnimationLayerOnLeft1 addSublayer:blankBackLayerForLayerLeft];
CALayer *blankFrontLayerForLayerLeft = CALayer layer];
blankFrontLayerForLayerLeft.frame = blankFlipAnimationLayerOnLeft1.bounds;
blankFrontLayerForLayerLeft.doubleSided = NO;
blankFrontLayerForLayerLeft.masksToBounds = YES;
//沿y轴翻转45度
blankFrontLayerForLayerLeft.transform = CATransform3DMakeRotation(-0.78, 0.0, 1.0, 0);
blankFlipAnimationLayerOnLeft1 addSublayer:blankFrontLayerForLayerLeft];
CALayer *blankBackLayerForLayerRight = CALayer layer];
blankBackLayerForLayerRight.frame = blankFlipAnimationLayerOnRight1.bounds;
blankBackLayerForLayerRight.doubleSided = NO;
blankBackLayerForLayerRight.masksToBounds = YES;
blankFlipAnimationLayerOnRight1 addSublayer:blankBackLayerForLayerRight];
CALayer *blankFrontLayerForLayerRight = CALayer layer];
blankFrontLayerForLayerRight.frame = blankFlipAnimationLayerOnRight1.bounds;
blankFrontLayerForLayerRight.doubleSided = NO;
blankFrontLayerForLayerRight.masksToBounds = YES;
//沿y轴翻转45度
blankFrontLayerForLayerRight.transform = CATransform3DMakeRotation(0.78, 0.0, 1.0, 0);
blankFlipAnimationLayerOnRight1 addSublayer:blankFrontLayerForLayerRight];
// end
// start
CALayer *blankBackLayerForLayerLeft2 = CALayer layer];
blankBackLayerForLayerLeft2.frame = blankFlipAnimationLayerOnLeft2.bounds;
blankBackLayerForLayerLeft2.doubleSided = NO;
blankBackLayerForLayerLeft2.masksToBounds = YES;
blankFlipAnimationLayerOnLeft2 addSublayer:blankBackLayerForLayerLeft2];
CALayer *blankFrontLayerForLayerLeft2 = CALayer layer];
blankFrontLayerForLayerLeft2.frame = blankFlipAnimationLayerOnLeft2.bounds;
blankFrontLayerForLayerLeft2.doubleSided = NO;
blankFrontLayerForLayerLeft2.masksToBounds = YES;
//沿y轴翻转45度
blankFrontLayerForLayerLeft2.transform = CATransform3DMakeRotation(-0.78, 0.0, 1.0, 0);
blankFlipAnimationLayerOnLeft2 addSublayer:blankFrontLayerForLayerLeft2];
CALayer *blankBackLayerForLayerRight2 = CALayer layer];
blankBackLayerForLayerRight2.frame = blankFlipAnimationLayerOnRight2.bounds;
blankBackLayerForLayerRight2.doubleSided = NO;
blankBackLayerForLayerRight2.masksToBounds = YES;
blankFlipAnimationLayerOnRight2 addSublayer:blankBackLayerForLayerRight2];
CALayer *blankFrontLayerForLayerRight2 = CALayer layer];
blankFrontLayerForLayerRight2.frame = blankFlipAnimationLayerOnRight2.bounds;
blankFrontLayerForLayerRight2.doubleSided = NO;
blankFrontLayerForLayerRight2.masksToBounds = YES;
//沿y轴翻转45度
blankFrontLayerForLayerRight2.transform = CATransform3DMakeRotation(0.78, 0.0, 1.0, 0);
blankFlipAnimationLayerOnRight2 addSublayer:blankFrontLayerForLayerRight2];
// end
CALayer *backLayer = CALayer layer];
backLayer.frame = flipAnimationLayer.bounds;
backLayer.doubleSided = NO;
backLayer.masksToBounds = YES;
flipAnimationLayer addSublayer:backLayer];
CALayer *frontLayer = CALayer layer];
frontLayer.frame = flipAnimationLayer.bounds;
frontLayer.doubleSided = NO;
frontLayer.masksToBounds = YES;
//沿y轴翻转45度
frontLayer.transform = CATransform3DMakeRotation(0.78, 0, 1.0, 0);
flipAnimationLayer addSublayer:frontLayer];
// shadows
frontLayerShadow = CALayer layer];
frontLayerShadow.frame = frontLayer.bounds;
frontLayerShadow.doubleSided = NO;
frontLayerShadow.masksToBounds = YES;
frontLayerShadow.opacity = 0;
frontLayerShadow.backgroundColor = UIColor blackColor].CGColor;
;
backLayerShadow = CALayer layer];
backLayerShadow.frame = backLayer.bounds;
backLayerShadow.doubleSided = NO;
backLayerShadow.masksToBounds = YES;
backLayerShadow.opacity = 0;
backLayerShadow.backgroundColor = UIColor blackColor].CGColor;
;
leftLayerShadow = CALayer layer];
leftLayerShadow.frame = leftLayer.bounds;
leftLayerShadow.doubleSided = NO;
leftLayerShadow.masksToBounds = YES;
leftLayerShadow.opacity = 0.0;
leftLayerShadow.backgroundColor = UIColor blackColor].CGColor;
;
rightLayerShadow = CALayer layer];
rightLayerShadow.frame = rightLayer.bounds;
rightLayerShadow.doubleSided = NO;
rightLayerShadow.masksToBounds = YES;
rightLayerShadow.opacity = 0.0;
rightLayerShadow.backgroundColor = UIColor blackColor].CGColor;
;
// shadows
UIInterfaceOrientation orient = UIApplication sharedApplication].statusBarOrientation;
UIImage* flipImage;
<p class=