文档章节

转场动画

大魔王_K
 大魔王_K
发布于 2016/01/29 15:11
字数 393
阅读 22
收藏 2
#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


© 著作权归作者所有

共有 人打赏支持
大魔王_K
粉丝 2
博文 19
码字总数 11255
作品 0
西安
私信 提问

暂无文章

ubuntu美化记,-修改皮肤,安装工具。

事情由来 最近系统盘坏了,换了新SSD,也换了新版的ubuntu 18.04LTS;不得不说,ubuntu 的桌面搞的越来越漂亮了。 把调整过的zsh shell样式,截个图上来镇一下楼: 添加了对python virtuale...

janl
4分钟前
0
0
阿里云物联网边缘计算加载MQTT驱动

写在前面 本文在LinkEdge快速入门样例驱动的基础上,加载了MQTT订阅的客户端,使得边缘端容器可以通过MQTT获得外部数据。 1. 系统需求 物联网边缘计算平台,又名Link IoT Edge[1]。在物联网边...

阿里云云栖社区
5分钟前
0
0
错误: 找不到或无法加载主类

在IDEA的使用过程中,经常断掉服务或者重启服务,最近断掉服务重启时突然遇到了一个启动报错: 错误:找不到或无法加载主类 猜测:1,未能成功编译; 尝试:菜单---》Build---》Rebuild Pro...

安小乐
21分钟前
1
0
vue路由传参,刷新页面,引发的bug

最近遇到一个bug 通过vue路由跳转到页面, 然后接参控制(v-if ),成功显示 而刷新页面,显示失败。 苦苦地找了半天原因,打印参数发现正确,再打印下类型......,路由跳过来会保持传参时的...

hanbb
22分钟前
1
0
【58沈剑 架构师之路】InnoDB,select为啥会阻塞insert?

MySQL的InnoDB的细粒度行锁,是它最吸引人的特性之一。 但是,如《InnoDB,5项最佳实践》所述,如果查询没有命中索引,也将退化为表锁。 InnoDB的细粒度锁,是实现在索引记录上的。 一,Inn...

张锦飞
25分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部