标签:
核心动画是一套包含图形绘制,投影,动画的 Objective–C 类集合。
核心动画的三块主要内容:
1.图层calayer
每一个view都默认有一个layer对象,用来显示视图。通过设置layer的一些属性可以改变一些layer视图的一些变化。
layer的一些属性:
_imageBack.layer.cornerRadius = 10;//设置圆角 _imageBack.layer.masksToBounds = YES;//遮盖layer层下的所有layer _imageBack.layer.borderWidth = 5;//设置边框宽度 _imageBack.layer.borderColor = [[UIColor orangeColor]CGColor];//设置边框颜色 注意:设置masksToBounds后会将shadow给遮盖,解决方法是,建立为一个SubLayer UIView *_view = [[UIView alloc]initWithFrame:_imageBack.frame]; [self.view addSubview:_view]; _view.layer.shadowColor = [[UIColor blueColor]CGColor];//设置阴影颜色 _view.layer.shadowOffset = CGSizeMake(10, 10);//设置阴影偏移量 _view.layer.shadowOpacity = 0.5;//设置阴影透明度 _view.layer.shadowRadius = 4;//设置阴影半径 [_view addSubview:_imageBack];//将图片视图添加到view中 // _imageBack.layer.contents = (id)[[UIImage imageNamed:@"xxxx"]CGImage];//可以在layer中设置图片
效果图:
除此之外,还有一些其他的属性:
mask--遮罩属性
opacity--透明度
compositingfilter--混合属性
filters--滤镜属性
backgroundcolor和backgroundfilters--图层背景属性
图层的所有几何属性:
frame bounds position anchorpoint cornerradius transform zposition
2.动画类caanimation:主要有三类
1)cabasicanimation 基础动画:提供了在图层属性值之间简单的插入
2)cakeyframeanimation 关键帧动画:你指定动画的一个图层属性的关键路径,一个表示在动画的每个阶段的价值的数组,还有一个关键帧时间 的数组和时间函数。caanimationgroup 动画组
3)catransition 转场动画:提供了一个影响整个图层的内容过渡效果。如淡出,推出等。
隐式动画:使所有动画属性的变化是渐近的和异步的。通过直接改变动画图层的属性来实现。
_layer.position=CGPointMake(500.0,500.0);
显示动画:创建一个动画对象,设置开始和结束的值。
显示动画的一些keypath
rotation.x 沿x轴旋转 rotation.y rotation.z rotation
scale.x 沿x轴放大 scale.y scale.z scale
translation.x 沿x轴转场 translation.y translation.z translation
3.事务类catransaction
图层的每一个改变都是事务的一部分。
显示动画实例:
设置视图的scale和opacity两个属性来实现视图的放大缩小
CABasicAnimation *basic = [CABasicAnimation animationWithKeyPath:@"transform.scale"];//初始化视图和设置动画key basic.fromValue = [NSNumber numberWithFloat:1.0];//设置起始值 basic.toValue = [NSNumber numberWithFloat:1.5];//设置中制值 basic.autoreverses = YES;//在结束点后重新回到初始点 basic.repeatCount = MAXFLOAT;//设置重复次数 basic.duration = 2.0;//设置持续时间 CABasicAnimation *opacity = [CABasicAnimation animationWithKeyPath:@"opacity"]; opacity.fromValue = [NSNumber numberWithFloat:0.0]; opacity.toValue = [NSNumber numberWithFloat:1.0]; opacity.autoreverses = YES; opacity.duration = 2.0; opacity.repeatCount = MAXFLOAT; [_imageBack.layer addAnimation:opacity forKey:@"opacity"]; [_imageBack.layer addAnimation:basic forKey:@"scale"];//添加视图
效果图:
关键帧动画:
CAKeyframeAnimation *keyAnimate = [CAKeyframeAnimation animationWithKeyPath:@"position"];//初始化帧动画,并动画的key NSValue *value0 = [NSValue valueWithCGPoint:_imageBack.layer.position]; NSValue *value1 = [NSValue valueWithCGPoint:CGPointMake(_imageBack.layer.position.x, _imageBack.layer.position.y+100)]; NSValue *value2 = [NSValue valueWithCGPoint:CGPointMake(_imageBack.layer.position.x +100, _imageBack.layer.position.y + 100)]; NSValue *value3 = [NSValue valueWithCGPoint:CGPointMake(_imageBack.layer.position.x + 100, _imageBack.layer.position.y)]; NSValue *value4 = [NSValue valueWithCGPoint:_imageBack.layer.position]; keyAnimate.values = @[value0,value1,value2,value3,value4];//设置帧动画的关键帧位置 keyAnimate.duration = 2.0; keyAnimate.repeatCount = MAXFLOAT; keyAnimate.keyTimes = @[@0.0,@0.5,@0.6,@0.7,@0.9];//设置管见证在移动过程中的移动时间 // CAMediaTimingFunction *tf0 = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];//设置每一段的时间曲线 // keyAnimate.timingFunctions = @[tf0];//添加时间曲线 [_imageBack.layer addAnimation:keyAnimate forKey:@"keyAnimate"];//添加动画到视图
效果图:
标签:
原文地址:http://www.cnblogs.com/moxuexiaotong/p/4965916.html