1.毛玻璃效果 (iOS8之后)
iOS8之后新加了UIBlurEffect类和UIVisualEffectView类使用起来也很简单
UIBlurEffect类设定毛玻璃效果的类型(3中类型)
UIVisualEffectView类在创建时加入UIBlurEffect的类的对象
2.系统自带的uiview的block块
一个简单的图片视图的放大然后渐渐消失的动画最后移除视图 可以使用嵌套block块来实现
3.CALayer层的动画
CABasicAnimation一般用法通过fromValue和toValue来指定开始和结束的值
属性Autoreverses 当设为YES时,在它到达目的地后,动画回到原始的值,代替直接跳转到开始的值
Duration 动画的时长 repeatCount 动画的重复次数(默认为0)只走一次。
Speed 动画播放按照默认的速度播放 默认为1.0 如果改变它的值会影响到动画的持续时间。
RemovedOnCompletion 设为YES在指定时间内动画完成后,动画从层上移除
animationWithKeyPath的值:
transform.scale 缩放
transform.translation.y 纵向移动
transform.translation.x 横向移动
opacity 透明度
transform.rotation.z 旋转
backgroundColor 背景色变化
+(CABasicAnimation *)opacityForever_Animation:(float)time //永久闪烁的动画
{
CABasicAnimation *animation=[CABasicAnimation animationWithKeyPath:@"opacity"];
animation.fromValue=[NSNumber numberWithFloat:1.0];
animation.toValue=[NSNumber numberWithFloat:0.0];
animation.autoreverses=YES;
animation.duration=time;
animation.repeatCount=FLT_MAX;
animation.removedOnCompletion=NO;
animation.fillMode=kCAFillModeForwards;
return animation;
}
+(CABasicAnimation *)opacityTimes_Animation:(float)repeatTimes durTimes:(float)time; //有闪烁次数的动画
{
CABasicAnimation *animation=[CABasicAnimation animationWithKeyPath:@"opacity"];
animation.fromValue=[NSNumber numberWithFloat:1.0];
animation.toValue=[NSNumber numberWithFloat:0.4];
animation.repeatCount=repeatTimes;
animation.duration=time;
animation.removedOnCompletion=NO;
animation.fillMode=kCAFillModeForwards;
animation.timingFunction=[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];
animation.autoreverses=YES;
return animation;
}
+(CABasicAnimation *)moveX:(float)time X:(NSNumber *)x //横向移动
{
CABasicAnimation *animation=[CABasicAnimation animationWithKeyPath:@"transform.translation.x"];
animation.toValue=x;
animation.duration=time;
animation.removedOnCompletion=NO;
animation.fillMode=kCAFillModeForwards;
return animation;
}
+(CABasicAnimation *)moveY:(float)time Y:(NSNumber *)y //纵向移动
{
CABasicAnimation *animation=[CABasicAnimation animationWithKeyPath:@"transform.translation.y"];
animation.toValue=y;
animation.duration=time;
animation.removedOnCompletion=NO;
animation.fillMode=kCAFillModeForwards;
return animation;
}
+(CABasicAnimation *)scale:(NSNumber *)Multiple orgin:(NSNumber *)orginMultiple durTimes:(float)time Rep:(float)repeatTimes //缩放
{
CABasicAnimation *animation=[CABasicAnimation animationWithKeyPath:@"transform.scale"];
animation.fromValue=orginMultiple;
animation.toValue=Multiple;
animation.duration=time;
animation.autoreverses=YES;
animation.repeatCount=repeatTimes;
animation.removedOnCompletion=NO;
animation.fillMode=kCAFillModeForwards;
return animation;
}
+(CAAnimationGroup *)groupAnimation:(NSArray *)animationAry durTimes:(float)time Rep:(float)repeatTimes //组合动画
{
CAAnimationGroup *animation=[CAAnimationGroup animation];
animation.animations=animationAry;
animation.duration=time;
animation.repeatCount=repeatTimes;
animation.removedOnCompletion=NO;
animation.fillMode=kCAFillModeForwards;
return animation;
}
+(CAKeyframeAnimation *)keyframeAniamtion:(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;
}
CAKeyFrameAnimation 关键帧动画 values属性指明整个动画过程中的关键帧点
path和values作用一样 指定整个动画经过的路径 当values和path同时指定时,values属性会被忽略。
keyTimes 指定一个数组用来为每一个路径指定动画时间如果没有设置keyTimes,系统默认每一个路径的时间为:time = duration/(values.count - 1),每一个路径的时间相。如果设置路径的动画时间不一致时可以传入一个数组 数组的首尾为0和1 如 animation.keyTimes = @[[NSNumber numberWithFloat:0.0],[NSNumber numberWithFloat:0.2],[NSNumber numberWithFloat:0.4],[NSNumber numberWithFloat:0.8],[NSNumber numberWithFloat:1.0]];那么第一段动画时长为(0.2-0.0)* duration,第二段为(0.4-0.2)*duration 依次计算动画时长。
timeFunctions用以指定时间函数,类似与运动的加速度
kCAMediaTimingFunctionLinear//线性
kCAMediaTimingFunctionEaseIn//淡入
kCAMediaTimingFunctionEaseOut//淡出
kCAMediaTimingFunctionEaseInEaseOut//淡入淡出
kCAMediaTimingFunctionDefault//默认
calculationMode来决定每一个子路径运动的类型
kCAAnimationLinear//默认,线性
kCAAnimationDiscrete//离散,无中间过程,但keyTimes设置的时间依旧生效,物体跳跃地出现在各个关键帧上
kCAAnimationPaced//平均,keyTimes跟timeFunctions失效
kCAAnimationCubic//平均,同上
kCAAnimationCubicPaced//平均,同上