• 图层的一些基本动画效果


    #define kRadianToDegrees (radian) (radian * 180.0) / (M_PI)

    //闪烁

    [self.testView.layer addAnimation:[self opacityForever_Animation:0.5] forKey:nil];

    //移动

    [self.testView.layer addAnimation:[self duration:3 move:[NSNumber numberWithInteger:200]] forKey:nil];

    //缩放

    [self.testView.layer addAnimation:[self scale:[NSNumber numberWithInteger:1] orgin:[NSNumber numberWithInteger:3] durTimes:1 Rep:MAXFLOAT] forKey:nil] ;

    //组合

    NSArray *myArray = [NSArray arrayWithObjects:[self opacityForever_Animation:0.5], [self duration:1.0f move:[NSNumber numberWithFloat:200.0f]], [self scale:[NSNumber numberWithFloat:1.0f] orgin:[NSNumber numberWithFloat:3.0f] durTimes:2.0f Rep:MAXFLOAT], nil];

     [self.testView.layer addAnimation:[self groupAnimation:myArray durTimes:3.0f Rep:MAXFLOAT] forKey:nil];

    //路径

    CGMutablePathRef myPah = CGPathCreateMutable();

    CGPathMoveToPoint(myPah, nil,30, 77);

    CGPathAddCurveToPoint(myPah, nil, 50, 50, 60, 200, 200, 200);//这里的是控制点。

    [self.testView.layer addAnimation:[self keyframeAnimation:myPah durTimes:5 Rep:MAXFLOAT] forKey:nil];

    //旋转

    [self.testView.layer addAnimation:[self rotation:2 degree:kRadianToDegrees(90) direction:1 repeatCount:MAXFLOAT] forKey:nil];

    //移除

    [self.testView.layer removeAllAnimations];

    #pragma mark === 闪烁 ======

    - (CABasicAnimation *)opacityForever_Animation:(float)time

    {

        CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"opacity"];//必须写opacity才行。

        animation.fromValue = [NSNumber numberWithFloat:1.0f];

        animation.toValue = [NSNumber numberWithFloat:0.0f];//这是透明度。

        animation.autoreverses = YES;

        animation.duration = time;

        animation.repeatCount = MAXFLOAT;

        animation.removedOnCompletion = NO;

        animation.fillMode = kCAFillModeForwards;

        animation.timingFunction=[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];///没有的话是均匀的动画。

        return animation;

    }

    #pragma mark =====横向、纵向移动===========

    -(CABasicAnimation *)duration:(float)time move:(NSNumber *)x

    {

        CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform.translation.x"];///.y的话就向下移动。

        animation.toValue = x;

        animation.duration = time;

        animation.removedOnCompletion = NO;//yes的话,又返回原位置了。

        animation.repeatCount = MAXFLOAT;

        animation.fillMode = kCAFillModeForwards;

        return animation;

    }

    #pragma mark =====缩放-=============

    -(CABasicAnimation *)scale:(NSNumber *)Multiple orgin:(NSNumber *)orginMultiple durTimes:(float)time Rep:(float)repertTimes

    {

        CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform.scale"];

        animation.fromValue = Multiple;

        animation.toValue = orginMultiple;

        animation.autoreverses = YES;

        animation.repeatCount = repertTimes;

        animation.duration = time;//不设置时候的话,有一个默认的缩放时间.

        animation.removedOnCompletion = NO;

        animation.fillMode = kCAFillModeForwards;

        return  animation;

    }

    #pragma mark =====组合动画-=============

    -(CAAnimationGroup *)groupAnimation:(NSArray *)animationAry durTimes:(float)time Rep:(float)repeatTimes

    {

        CAAnimationGroup *animation = [CAAnimationGroup animation];

        animation.animations = animationAry;

        animation.duration = time;

        animation.removedOnCompletion = NO;

        animation.repeatCount = repeatTimes;

        animation.fillMode = kCAFillModeForwards;

        return animation;

    }

    #pragma mark =====路径动画-=============

    -(CAKeyframeAnimation *)keyframeAnimation:(CGMutablePathRef)path durTimes:(float)time Rep:(float)repeatTimes

    {

        CAKeyframeAnimation *animation = [CAKeyframeAnimation animationWithKeyPath:@"position"];

        animation.path = path;

        animation.removedOnCompletion = NO;

        animation.fillMode = kCAFillModeForwards;

        animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];

        animation.autoreverses = NO;

        animation.duration = time;

        animation.repeatCount = repeatTimes;

        return animation;

    }

    #pragma mark ====旋转动画======

    -(CABasicAnimation *)rotation:(float)dur degree:(float)degree direction:(int)direction repeatCount:(int)repeatCount

    {

        CATransform3D rotationTransform = CATransform3DMakeRotation(degree, 0, 0, direction);

        CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform"];

        animation.toValue = [NSValue valueWithCATransform3D:rotationTransform];

        animation.duration  =  dur;

        animation.autoreverses = NO;

        animation.cumulative = NO;

        animation.fillMode = kCAFillModeForwards;

        animation.repeatCount = repeatCount;

        animation.delegate = self;

        return animation;

    }

  • 相关阅读:
    Sublime Text 3 3126 注册码
    修改bootstrap 的全局样式,bootstrap 3.0 是由html5和CSS 3组成的
    mysql-sql高级应用
    MySQL 主键冲突,无法插入数据
    jquery加载页面的方法(页面加载完成就执行)
    Jquery怎么获取select选中项 自定义属性的值
    使用Yii2中dropdownlist实现地区三级联动的例子
    Yii2中省市三级联动(栏目联动)
    [HNOI2009] 梦幻布丁
    [CJOJ2410]数列操作d
  • 原文地址:https://www.cnblogs.com/lhx2015/p/4642323.html
Copyright © 2020-2023  润新知