博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
核心动画实现书本翻页效果加载动画
阅读量:5914 次
发布时间:2019-06-19

本文共 1458 字,大约阅读时间需要 4 分钟。

经常看到一些很好的动画加载视图,闲来无事就写了一个书本翻页样式的动画加载视图,核心技术是CALayer+CoreAnimation。项目源码地址:https://github.com/China131/JHLodingView.git 如果有所帮助,记得star哦?

正题如下:

创建一个单独的layer:

   /*        使用类方法创建CAlayer对象         */

      CALayer *  layer = [CALayer layer];

        

        /*        CATransform实际上是一个结构体 因此不能直接对内部元素直接赋值         */

        CATransform3D transform = layer.transform;

        

        /*        设置layer的立体效果值 m34为该值 渲染立体效果         */

        transform.m34 = 10.5/-2000;

        

        layer.transform = transform;

        

        /*        设置layer的背景颜色,注意是CGColor类型         */

        layer.backgroundColor = [k_COLOR_STOCK[_currentIndex%k_COLOR_STOCK.count] CGColor];

        

        /*        设置锚点,锚点即动画的中心点,默认为(二维环境)(0.5.0.5),分别表示X轴中点 Y轴中点         */

        layer.anchorPoint = CGPointMake(0, 0.5);

        

        layer.frame = CGRectMake(200, 100, 30, 45);

        

        /*        设置layer的中心点,相当于UIView对象的center熟悉         */

        layer.position = CGPointMake(K_IOS_WIDTH/2, K_IOS_HEIGHT/2-50);

        

        [self.layer addSublayer:layer];

创建翻页动画

  /*        创建翻页动画         */

    CABasicAnimation *basic = [CABasicAnimation animationWithKeyPath:@"transform.rotation.y"];

    

    /*        transform.rotation.y的动画开始值         */

    basic.fromValue  = @(-M_PI );

    

    /*        transform.rotation.y的动画结束值         */

    basic.toValue = @(0);

    

    /*        是否在动画结束后自动按照反向动画回归原状态         */

    basic.autoreverses = NO;

    

    /*        动画执行次数         */

    basic.repeatCount = 1;

    

    /*        动画时长         */

    basic.duration = 1.0;

    

    /*        动画填充模式         */

    basic.fillMode = kCAFillModeRemoved;

    /*        设置代理         */

    basic.delegate = self;

    [layer addAnimation:basic forKey:@"basc"];

 当按照上方法循环添加多个layer动画时,并间隔0.2s执行,就会有从左到右的翻页动画效果。如果想要更加完美,可以将这些layer添加到数组,在从左到右的动画完成后,给数组中的layer添加一个反向动画,即可实现来回的翻页动画。效果图如下:

                                     

 

转载于:https://www.cnblogs.com/ToBeTheOne/p/5636591.html

你可能感兴趣的文章
通过chkconfig设置linux开机自启动服务- 老男孩Linux运维学习笔记1
查看>>
CENTOS 安装 jenkins
查看>>
Java思考题
查看>>
iptables详解
查看>>
Kaptchar详细配置表
查看>>
Java程序员从笨鸟到菜鸟之(四十三)细谈struts2(六)获取servletAPI和封装表单数据...
查看>>
OSPF详述
查看>>
我的友情链接
查看>>
红黑树的原理分析和算法设计
查看>>
ant_Jmeter持续集成测试报告优化之添加throughput显示
查看>>
iostat介绍
查看>>
Linux计算字符串md5/sha1
查看>>
我的友情链接
查看>>
dancer cookbook 小议4
查看>>
CORBA版HelloWorld
查看>>
Selenium IDE XPath元素定位器
查看>>
加入51CTO
查看>>
一个=号引发的错误.......
查看>>
CPU显卡内存与3DMAX渲染的关系
查看>>
【Java】方法重载于覆写的区别;This与Super的区别;Final关键字的作用
查看>>