• IOS动画


    基础动画

    //创建基础动画
        CABasicAnimation * basic = [CABasicAnimation animation];
        //动画路径
        basic.keyPath = @"position";
        
        //设置初始状态
    //    basic.fromValue = [NSValue valueWithCGPoint:CGPointMake(0, 0)];
    //    //终止状态
    //    basic.toValue = [NSValue valueWithCGPoint:CGPointMake(300, 300)];
        
        //动画距离
        basic.byValue = [NSValue valueWithCGPoint:CGPointMake(200, 200)];
        
        //动画的初始和结束的模式 fillMode和removedOnCompletion要配合使用
        basic.fillMode = kCAFillModeForwards;// @"forwards";
        //动画完成在layer中删除
        basic.removedOnCompletion = NO;
        
        //如果初始状态就是当前动画未执行的位置
        
        //动画时间
        basic.duration = 1;
        
        //动画的加速度
        basic.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];
        //animation.timingFunction = [CAMediaTimingFunction functionWithControlPoints:0.5 :0 :0.9 :0.7];

        
        //添加动画
        [_animationView.layer addAnimation:basic forKey:@"basic"];


    关键帧动画

    //创建关键帧动画
        CAKeyframeAnimation * keyframe = [CAKeyframeAnimation animation];
        
        keyframe.keyPath = @"position.x";
        
        //设置关键帧的位置
        keyframe.values = @[@0,@10,@-10,@10,@0];

        //设置关键帧的时间
        keyframe.keyTimes = @[ @0, @(1 / 6.0), @(3 / 6.0), @(5 / 6.0), @1 ];
        
        //无需设置起始位置
        keyframe.additive = YES;
        
        //calculationMode设置加速度,kCAAnimationPaced保持恒定的加速度,如果设置calculationMode,keyTimes失效
        keyframe.calculationMode = kCAAnimationPaced;
        
    //重复次数
        keyframe.repeatCount = HUGE_VALF; //MAXFLOAT;

        //设置时间
        keyframe.duration = 0.5;
        
        [_animationView.layer addAnimation:keyframe forKey:@"keyframe"];


    过度动画
    //创建过度动画
        CATransition * transition = [CATransition animation];
        transition.type = @"suckEffect";
        transition.subtype = @"fromLeft";
        transition.duration = 2;
        [self.imageView.layer addAnimation:transition forKey:nil];
    /* 过渡效果
     fade     //交叉淡化过渡(不支持过渡方向) kCATransitionFade
     push     //新视图把旧视图推出去  kCATransitionPush
     moveIn   //新视图移到旧视图上面   kCATransitionMoveIn
     reveal   //将旧视图移开,显示下面的新视图  kCATransitionReveal
     cube     //立方体翻滚效果
     oglFlip  //上下左右翻转效果
     suckEffect   //收缩效果,如一块布被抽走(不支持过渡方向)
     rippleEffect //滴水效果(不支持过渡方向)
     pageCurl     //向上翻页效果
     pageUnCurl   //向下翻页效果
     cameraIrisHollowOpen  //相机镜头打开效果(不支持过渡方向)
     cameraIrisHollowClose //相机镜头关上效果(不支持过渡方向)
    */
      
    /* 过渡方向
     kCATransitionFromRight
     kCATransitionFromLeft
     kCATransitionFromBottom

  • 相关阅读:
    php7.1安装
    nginx 的限制连接模块limit_zone与limit_req_zone
    selinux导致docker启动失败
    docker学习笔记
    kvm虚拟机
    ZooKeeper在线迁移
    启动EMQ(emqtt)时报错找不到libsctp.so.1
    Linux Samba服务主配文件smb.conf中文详解
    python-day7-字符串类型的内置方法
    python-day7-数字类型的内置方法
  • 原文地址:https://www.cnblogs.com/ldnh/p/5263337.html
Copyright © 2020-2023  润新知