进阶 12-5 转场动画

#import "ViewController.h"
#define IMAGE_COUNT 5
@interface ViewController ()
/*  图片 */
@property (strong,nonatomic) UIImageView *imageView;
/* 当前下标*/
@property (assign,nonatomic) NSInteger currentIndex;
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    self.imageView = [[UIImageView alloc] init];
    self.imageView.frame = [UIScreen mainScreen].bounds;
    
    //这个图片会在View中显示,并且比例不变
    self.imageView.contentMode = UIViewContentModeScaleAspectFit;
    self.imageView.image = [UIImage imageNamed:@"0.jpg"];
    [self.view addSubview:self.imageView];
    
    //添加手势
    UISwipeGestureRecognizer *left = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(leftSwipe:)];
    left.direction = UISwipeGestureRecognizerDirectionLeft;
    [self.view addGestureRecognizer:left];
    
    UISwipeGestureRecognizer *right = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(rightSwipe:)];
    right.direction = UISwipeGestureRecognizerDirectionRight;
    [self.view addGestureRecognizer:right];
}

- (void)leftSwipe:(UISwipeGestureRecognizer *)gestur{
    [self transitionAnimation:YES];
}
- (void)rightSwipe:(UISwipeGestureRecognizer *)gestur{
    [self transitionAnimation:NO];
}

- (void)transitionAnimation:(BOOL)isNext{
    //1.创建转场动画
    CATransition *tran = [[CATransition alloc] init];
    //效果
    tran.type = @"cube";
    
    if (isNext) {
        tran.subtype = kCATransitionFromRight;
    }else{
        tran.subtype = kCATransitionFromLeft;
    }
    
    tran.duration = 1.0f;
    self.imageView.image = [self getImage:isNext];
    
    [self.imageView.layer addAnimation:tran forKey:@"Transition"];
}

- (UIImage *)getImage:(BOOL)isNext{
    //后一张
    if (isNext) {
        
        self.currentIndex = (self.currentIndex + 1) % IMAGE_COUNT;
    }else{
        self.currentIndex = (self.currentIndex - 1 + IMAGE_COUNT) % IMAGE_COUNT;
    }
    
    //往数组中添加图片,图片名与下标名对应
    NSString *imageName = [NSString stringWithFormat:@"%ld.jpg",self.currentIndex];
    return [UIImage imageNamed:imageName];
}

@end

你可能感兴趣的:(进阶 12-5 转场动画)