转场动画实现 mars 城市选择动画

GitHub传送门 mars 选择城市动画

分析动画组成

  • 3D旋转
    • CATransform3DRotate
CATransform3D transform = CATransform3DIdentity;
    
    //m34 http://www.cnblogs.com/OIMM/p/5205528.html
    //m43 z轴平移 由于两个view做m34动画的时候会出现重叠 调整两个视图的z轴距离避免重叠
    transform.m34 = -1.0/ 500;
    if (isPush) {
        transform.m43 = isLeft ? 1000:0;
    } else {
        transform.m43 = isLeft ? 0:1000;
    }
    
    //CATransform3D 帧动画
    CAKeyframeAnimation *anim_3d =  [CAKeyframeAnimation animationWithKeyPath:@"transform"];
    
    CATransform3D begin = CATransform3DRotate(transform, radianFromDegree(0), 0, 1, 0);
    CATransform3D middle = CATransform3DRotate(transform, radianFromDegree(isLeft ? 25:-25), 0, 1, 0);
    middle.m43 = 0;
    
    CATransform3D end = CATransform3DRotate(transform, radianFromDegree(isLeft ? 10:0), 0, 1, 0);
    
    if (isPush) {
        end.m43 = isLeft ? -1000:0;
    } else {
        end.m43 = isLeft ? 0:-1000;
    }
    
    
    anim_3d.values = @[[NSValue valueWithCATransform3D: begin],[NSValue valueWithCATransform3D:middle] ,[NSValue valueWithCATransform3D:end]];
  • 水平移动
    • transform.translation.x
  • 缩小
    • transform.scale

动画实现

  • 利用iOS 核心动画 帧动画

动画效果

  • 发现效果不如mars的完美 就当是学习一下

<img src="http://upload-images.jianshu.io/upload_images/1899979-ff58980be24e69d9.gif?imageMogr2/auto-orient/strip" width="375">

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 看了很多视频、文章,最后却通通忘记了,别人的知识依旧是别人的,自己却什么都没获得。此系列文章旨在加深自己的印象,因...
    DCbryant阅读 1,895评论 0 4
  • 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥ios动画全貌。在这里你可以看...
    每天刷两次牙阅读 8,572评论 6 30
  • 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥iOS动画全貌。在这里你可以看...
    F麦子阅读 5,141评论 5 13
  • iOS动画篇之CoreAnimation动画 9月 22, 2016发布在Objective-C App如果想被大...
    白水灬煮一切阅读 2,125评论 0 0
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,241评论 4 61