轉場動畫

#import "ViewController.h"
#define IMAGE_COUNT 10//圖片數量

@interface ViewController ()
{
    UIImageView *_imageView;
    int _current;
}

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    _current = 0;
    //定義一個圖片控件
    _imageView = [[UIImageView alloc]initWithFrame:[UIScreen mainScreen].bounds];
    _imageView.contentMode = UIViewContentModeScaleAspectFill;
    _imageView.image = [UIImage imageNamed:[NSString stringWithFormat:@"%d.jpg", _current]];
    [self.view addSubview:_imageView];
    
    //添加手勢
    UISwipeGestureRecognizer *leftSwipeGesture = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(leftSwipe:)];
    leftSwipeGesture.direction = UISwipeGestureRecognizerDirectionLeft;//設置手勢方向
    [self.view addGestureRecognizer:leftSwipeGesture];
    
    UISwipeGestureRecognizer *rightSwipeGesture = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(rightSwipe:)];
    rightSwipeGesture.direction = UISwipeGestureRecognizerDirectionRight;//設置手勢方向
    [self.view addGestureRecognizer:rightSwipeGesture];}

- (void)leftSwipe : (UISwipeGestureRecognizer *)gesture
{
    [self transitionAnimation:YES];//YES表示下一張圖片
}

- (void)rightSwipe : (UISwipeGestureRecognizer *)gesture
{
    [self transitionAnimation:NO];//NO表示上一張圖片
}

#pragma mark 轉場動畫
- (void)transitionAnimation : (BOOL)isNext
{
    //1.建立動畫對象
    CATransition * transition = [[CATransition alloc]init];
    //2.設置動畫類型,對於蘋果官方沒有公開的動畫類型只能使用字符串
    //cube                   立方體翻轉效果
    //oglFlip                翻轉效果
    //suckEffect             收縮效果
    //rippleEffect           水滴波紋效果
    //pageCurl               向上翻頁效果
    //pageUnCurl             向下翻頁效果
    //cameraIrisHollowOpen   攝像頭打開效果
    //cameraIrisHollowClose  攝像頭關閉效果
    transition.type = @"cube";
    
    //設置子類型(轉場動畫從什麼方向)
    if (isNext) {
        transition.subtype = kCATransitionFromRight;
    }
    else{
        transition.subtype = kCATransitionFromLeft;
    }
    //設置動畫時間
    transition.duration = 1.0;
    
    //設置轉場後的新視圖
    if (isNext) {
        //下一張圖片
        _current = (_current + 1) % IMAGE_COUNT;
    }
    else{
        //上一張圖片
        _current = (_current - 1 + IMAGE_COUNT) % IMAGE_COUNT;
    }
    _imageView.image = [UIImage imageNamed:[NSString stringWithFormat:@"%d.jpg",_current]];
    //添加動畫
    [_imageView.layer addAnimation:transition forKey:@"YC"];
    
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end
相關文章
相關標籤/搜索