前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >iOS常用的几个动画代码

iOS常用的几个动画代码

原创
作者头像
用户8671053
修改2021-10-29 11:33:57
5500
修改2021-10-29 11:33:57
举报
文章被收录于专栏:码农的生活
代码语言:javascript
复制
使用前

    需引入QuartzCore.framework, 并在相关文件中加入 #import "QuartzCore/QuartzCore.h"

 
定义

     shakeFeedbackOverlay为UIImageView

 
设置

     self.shakeFeedbackOverlay.alpha = 0.0;

     self.shakeFeedbackOverlay.layer.cornerRadius = 10.0; //设置圆角半径

 
1、图像左右抖动

CABasicAnimation* shake = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];

shake.fromValue = [NSNumber numberWithFloat:-M_PI/32];

shake.toValue = [NSNumber numberWithFloat:+M_PI/32];

shake.duration = 0.1;

shake.autoreverses = YES; //是否重复

shake.repeatCount = 4;

[self.shakeFeedbackOverlay.layer addAnimation:shake forKey:@"shakeAnimation"];

self.shakeFeedbackOverlay.alpha = 1.0;

[UIView animateWithDuration:2.0 delay:0.0 options:UIViewAnimationOptionCurveEaseIn | UIViewAnimationOptionAllowUserInteraction animations:^{ self.shakeFeedbackOverlay.alpha = 0.0; //透明度变0则消失 } completion:nil];

 
2、图像顺时针旋转

CABasicAnimation* shake = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];

shake.fromValue = [NSNumber numberWithFloat:0];

shake.toValue = [NSNumber numberWithFloat:2*M_PI];

shake.duration = 0.8; shake.autoreverses = NO;

shake.repeatCount = 1;

[self.shakeFeedbackOverlay.layer addAnimation:shake forKey:@"shakeAnimation"];

self.shakeFeedbackOverlay.alpha = 1.0;

[UIView animateWithDuration:10.0 delay:0.0 options:UIViewAnimationOptionCurveEaseIn | UIViewAnimationOptionAllowUserInteraction animations:^{ self.shakeFeedbackOverlay.alpha = 0.0; } completion:nil];

 
3、图像关键帧动画

CAKeyframeAnimation *animation = [CAKeyframeAnimation animation];

CGMutablePathRef aPath = CGPathCreateMutable();

CGPathMoveToPoint(aPath, nil, 20, 20);

CGPathAddCurveToPoint(aPath, nil, 160, 30, 220, 220, 240, 420);

animation.path = aPath;

animation.autoreverses = YES;

animation.duration = 2;

animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut];

animation.rotationMode = @"auto";

[ballView.layer addAnimation:animation forKey:@"position"];

 
4、组合动画 CAAnimationGroup

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

flip.toValue = [NSNumbernumberWithDouble:-M_PI];

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

scale.toValue = [NSNumbernumberWithDouble:12];

scale.duration = 1.5;

scale.autoreverses = YES;

CAAnimationGroup *group = [CAAnimationGroup animation];

group.animations = [NSArray arrayWithObjects:flip, scale, nil];

group.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];

group.duration = 3;

group.fillMode = kCAFillModeForwards;

group.removedOnCompletion = NO;

[ballView.layer addAnimation:group forKey:@"position"];

 
5、指定时间内旋转图片
//启动定时器旋转光圈

(void)startRotate

{

self.rotateTimer = [NSTimer scheduledTimerWithTimeInterval:0.02

                                              target:self

                                            selector:@selector(rotateGraduation)

                                            userInfo:nil

                                             repeats:YES];

 
}
//关闭定时器

(void)stopTimer

{

if ([self.rotateTimerisValid])

 
{

    [self.rotateTimerinvalidate];

    self.rotateTimer = nil;

}

 
}
//旋转动画

(void)rotateGraduation

{

self.timeCount--;

if (self.timeCount == 0)

{

    [self stopTimer];

    // doSomeThing //旋转完毕 可以干点别的

    self.timeCount = 25;

}

else

{

    //计算角度 旋转

    static CGFloat radian = 150 * (M_2_PI / 360);

    CGAffineTransform transformTmp = self.lightImageView.transform;

    transformTmp = CGAffineTransformRotate(transformTmp, radian);

    self.lightImageView.transform = transformTmp;

};

 
}
调用方法
self.timeCount = 25; //动画执行25次
[self startRotate];</pre> 

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档