一、首尾式动画,渐变动画
// 1. 准备开始一个动画
[UIView beginAnimations:nil context:nil];
// 2. 修改控件属性的代码放在中间
// 3. 提交动画
[UIView commitAnimations];
// 4. 设置动画执行的时长
[UIView setAnimationDuration:1.0];
二、序列帧动画
//1.把所有需要的图片加载进一个临时数组
// imageNamed:这个方法初始化的图片会加载到内存到,并且一直不会释放掉
// imageWithContentsOfFile:这个方法初始化图片, 是从磁盘中加载图片.
// 2. 把这些图片一一播放
// 2.1 把要播放动画的图片全部放到animationImages
self.tom.animationImages = tmpImages;
// 设置动画播放次数
self.tom.animationRepeatCount = 1;
// 播放的时长
self.tom.animationDuration = count * 0.05f;
// 2.2 开始动画
[self.tom startAnimating];
//3.动画播放结束以后 清空指向数组
self.animationImages = nil;
[self setAnimationImages:nil];
[self performSelector:@selector(setAnimationImages:) withObject:nil];
/**
* 创建关键帧方法
*
* @param duration 动画时长
* @param delay 动画延迟
* @param options 动画效果选项
* @param animations 动画执行代码
* @param completion 动画结束执行代码
*/
+ (void)animateKeyframesWithDuration:(NSTimeInterval)duration
delay:(NSTimeInterval)delay
options:(UIViewKeyframeAnimationOptions)options
animations:(void (^)(void))animations
completion:(void (^)(BOOL finished))completion;
/**
* 添加关键帧
*
* @param frameStartTime 动画相对开始时间
* @param frameDuration 动画相对持续时间
* @param animations 动画执行代码
*/
+ (void)addKeyframeWithRelativeStartTime:(double)frameStartTime
relativeDuration:(double)frameDuration
animations:(void (^)(void))animations;
三、块代码动画
方法一:
[UIView animateWithDuration:4.0 // 动画时长
animations:^{
// code
}];
方法二:
[UIView animateWithDuration:4.0 // 动画时长
animations:^{
// code...
}
completion:^(BOOL finished) {
// 动画完成后执行
// code...
}];
方法三:
[UIView animateWithDuration:4.0 // 动画时长
delay:2.0 // 动画延迟
options:UIViewAnimationOptionCurveEaseIn // 动画过渡效果
animations:^{
// code...
}
completion:^(BOOL finished) {
// 动画完成后执行
// code...
}];
方法四,Spring Animationring Animation:
[UIView animateWithDuration:4.0 // 动画时长
delay:0.0 // 动画延迟
usingSpringWithDamping:1.0 // 类似弹簧振动效果 0~1
initialSpringVelocity:5.0 // 初始速度
options:UIViewAnimationOptionCurveEaseInOut // 动画过渡效果
animations:^{
// code...
CGPoint point = _imageView.center;
point.y += 150;
[_imageView setCenter:point];
} completion:^(BOOL finished) {
// 动画完成后执行
// code...
[_imageView setAlpha:1];
}];
usingSpringWithDamping:它的范围为 0.0f 到 1.0f ,数值越小「弹簧」的振动效果越明显。
initialSpringVelocity:初始的速度,数值越大一开始移动越快。值得注意的是,初始速度取值较高而时间较短时,也会出现反弹情况。
/**
UIViewAnimationOptionCurveEaseInOut 动画刚开始和要结束的时候,是缓慢的
UIViewAnimationOptionCurveEaseIn 动画刚开始,是缓慢的
UIViewAnimationOptionCurveEaseOut 动画要结束的时候,是缓慢的
UIViewAnimationOptionCurveLinear 匀速
*/
---------------------------------------------
代码示例:https://github.com/tengcoding/TTAnimationDemo