zoukankan      html  css  js  c++  java
  • IOS动画总结二 Core Animation

    关于CALayer中transform属性的理解:
        这个属性设置是一个3D变换对象CATransform3D 跟之前说的CGAffineTransform(仿射变换,2D)的一样
        其中的函数性质都一样:
         CATransform3D CATransform3DIdentity  原样
         bool CATransform3DIsIdentity (CATransform3D t) 判断该3D变换对象是否是原样
         bool CATransform3DEqualToTransform (CATransform3D a,CATransform3D b)  两个是否相等
         CATransform3D CATransform3DMakeTranslation (CGFloat tx,CGFloat ty, CGFloat tz) 创建平移
         CATransform3D CATransform3DMakeScale (CGFloat sx, CGFloat sy,CGFloat sz) 创建缩放
         CATransform3D CATransform3DMakeAffineTransform (CGAffineTransform m) 从仿射变换对象创建3D
         创建旋转
         CATransform3D CATransform3DMakeRotation (CGFloat angle, CGFloat x,CGFloat y, CGFloat z)
         添加
         CATransform3D CATransform3DTranslate (CATransform3D t, CGFloat tx,CGFloat ty, CGFloat tz)
         CATransform3D CATransform3DScale (CATransform3D t, CGFloat sx,CGFloat sy, CGFloat sz)
         CATransform3D CATransform3DRotate (CATransform3D t, CGFloat angle,CGFloat x, CGFloat y,CGFloat z)

        CATransform3D CATransform3DConcat (CATransform3D a, CATransform3D b)  合并
        CATransform3D CATransform3DInvert (CATransform3D t)  反向效果
       
        bool CATransform3DIsAffine (CATransform3D t)  是否等价仿射变换
        CGAffineTransform CATransform3DGetAffineTransform (CATransform3D t) 从3D到放射变换对象

        CAKeyframeAnimation * animation;
    animationWithKeyPath---那个属性不能随便填,它必须是CALayer的某项属性,你下面写的代码才会对应的去执行改变该属性的效果,例如这里是transform,就是图像的 transform的改变,常见的有翻页,渐变,上,下拉进,拉出的效果,如果是bounds的话,那么就是该UIView的bounds属性变化,如变 大变小,如果是position,那么就是UIView整体位置的改变,总之是不能乱写的
        animation = [CAKeyframeAnimation animationWithKeyPath:@"transform"];
        animation.duration = 2.5; 动画执行时间
        animation.delegate = self;
        animation.removedOnCompletion = YES;
        animation.fillMode = kCAFillModeForwards;
        animation.repeatCount = 15.0;动画重复次数
        
        NSMutableArray *values = [NSMutableArray array];
        //CATransform3DMakeRotation 第一个参数表示弧度,后面三个一次x,y,z轴
         2D旋转指定一个轴就行   3D旋转指定两个轴

        
        [values addObject:[NSValue valueWithCATransform3D:CATransform3DMakeRotation(0, 1, 0, 1)]];
        [values addObject:[NSValue valueWithCATransform3D:CATransform3DMakeRotation(0.52, 1, 0, 1)]];
        [values addObject:[NSValue valueWithCATransform3D:CATransform3DMakeRotation(1.01, 1, 0, 1)]];
        [values addObject:[NSValue valueWithCATransform3D:CATransform3DMakeRotation(1.57, 1, 0, 1)]];
        [values addObject:[NSValue valueWithCATransform3D:CATransform3DMakeRotation(2.03, 1, 0, 1)]];
        [values addObject:[NSValue valueWithCATransform3D:CATransform3DMakeRotation(0, 1, 0, 1)]];

       
        
        animation.values = values;
        
        animation.timingFunction = [CAMediaTimingFunction functionWithName: @"easeInEaseOut"];
        
        [sub.layer addAnimation:animation forKey:nil];
        
        
        [main addSubview:sub];
        [self.view addSubview:main];
        [sub release];
        [main release];  
  • 相关阅读:
    Maven+JSP+Servlet+JDBC+Redis+Mysql实现的黑马旅游网
    Thymeleaf+SpringBoot+SpringDataJPA实现的中小医院信息管理系统
    Thymeleaf+SpringBoot+Mybatis实现的家庭财务管理系统
    JSP+Struts2+JDBC+Mysql实现的校园宿舍管理系统
    JSP+SSH+Mysql+C3P0实现的传智播客网上商城
    JSP+SSH+Mysql实现的学生管理系统
    JSP+Servlet+C3P0+Mysql实现的简单新闻系统
    笔记:EF出现列名 'Discriminator' 无效、类没有加入数据库上下文也被数据迁移生成表
    判断字符串中是否存在的几种方案:string.indexof、string.contains、list.contains、list.any几种方式效率对比
    Sql server 中关闭ID自增字段(SQL取消ID自动增长)
  • 原文地址:https://www.cnblogs.com/cnsec/p/11515888.html
Copyright © 2011-2022 走看看