目标:运用UISwipeGestureRecognizer和动画制作立体式切换视图。
//定义两个手势分别向左向右滑动
@property (nonatomic, strong) UISwipeGestureRecognizer *leftSwipeGestureRec;
@property (nonatomic, strong) UISwipeGestureRecognizer *rightSwipeGestureRec;
@property (weak, nonatomic) IBOutlet UIImageView *imageView;
@property (nonatomic) NSInteger index;
- (void)viewDidLoad {
[super viewDidLoad];
self.index = 0;
//[self setPicProperty];
//当界面加载后会出现的图片
self.imageView.image = [UIImage imageNamed:[NSString stringWithFormat:@"picture%ld.jpg",self.index]];
[self initGesture];
}
//初始化手势的左右滑动,并会响应的方法
- (void)initGesture{
self.leftSwipeGestureRec = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipes:)];
self.rightSwipeGestureRec = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipes:)];
self.leftSwipeGestureRec.direction = UISwipeGestureRecognizerDirectionLeft;
self.rightSwipeGestureRec.direction = UISwipeGestureRecognizerDirectionRight;
[self.view addGestureRecognizer:self.leftSwipeGestureRec];
[self.view addGestureRecognizer:self.rightSwipeGestureRec];
}
//响应的方法
- (void)handleSwipes:(UISwipeGestureRecognizer *)sender{
if (sender.direction == UISwipeGestureRecognizerDirectionLeft) {
[self swipeNextPic];
}
if (sender.direction == UISwipeGestureRecognizerDirectionRight) {
[self swipeLastPic];
}
}
//向左滑动时会进行的操作
- (void)swipeNextPic{
self.index++;
if (self.index > 5) {
self.index = 0;
}
self.imageView.image = [UIImage imageNamed:[NSString stringWithFormat:@"picture%ld.jpg",self.index]];
CATransition *ca = [CATransition animation];
/*1.#define定义的常量
kCATransitionFade 交叉淡化过渡
kCATransitionMoveIn 新视图移到旧视图上面
kCATransitionPush 新视图把旧视图推出去
kCATransitionReveal 将旧视图移开,显示下面的新视图
2.用字符串表示
pageCurl 向上翻一页
pageUnCurl 向下翻一页
rippleEffect 滴水效果
suckEffect 收缩效果,如一块布被抽走
cube 立方体效果
oglFlip 上下翻转效果*/
//ca.type = @"cube";
//ca.type = @"pageCurl";
//ca.type = @"rippleEffect";
ca.type = @"oglFlip";
ca.subtype = kCATransitionFromRight;
ca.duration = 2.0;
ca.startProgress = 0.1;
[self.imageView.layer addAnimation:ca forKey:nil];
}
//向右滑动时
- (void)swipeLastPic{
self.index--;
if (_index < 0) {
self.index = 5;
}
self.imageView.image = [UIImage imageNamed:[NSString stringWithFormat:@"picture%ld.jpg",self.index]];
CATransition *ca = [CATransition animation];
ca.type = @"cube";
ca.subtype = kCATransitionFromLeft;
ca.duration = 2.0;
[self.imageView.layer addAnimation:ca forKey:nil];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
效果图: