iOS Developer

layer 和Core Animation

2016-03-03  本文已影响103人  木语先生

layer的基本属性

1>边框

redView.layer.borderWidth = 10; // 边框的宽度

redView.layer.borderColor = [UIColor whiteColor].CGColor; // 边框的颜色

2>阴影

redView.layer.shadowOffset = CGSizeMake(50, 50); // 偏移量

redView.layer.shadowColor = [UIColor blueColor].CGColor; // 颜色

redView.layer.shadowOpacity = 1; // 透明度 (如果要显示 一定要加)

redView.layer.shadowRadius = 50; // 阴影的圆角半径

3>圆角

redView.layer.cornerRadius = 50;

redView.layer.masksToBounds = YES;

4>bounds

redView.layer.bounds = CGRectMake(0, 0, 200, 200);

5>postion属性和view.center的关系 默认

redView.layer.position = CGPointMake(100, 100);

6>设置内容(图片)

redView.layer.contents = (__bridge id)([UIImage imageNamed:@"me"].CGImage);

-------------如何禁用隐式动画-------------

[CATransaction begin]; // 开启事务

[CATransaction setDisableActions:YES]; // 禁用隐式动画

// 设置红色的layer 跑到手指的位置上

self.layer.position = p;

[CATransaction commit]; // 提交事务

-------------核心动画---------------

------------基础动画-------------------

CABasicAnimation *basic = [[CABasicAnimation alloc]init];

//操作

basic.keyPath = @"position.x";

basic.fromValue = @(10);//从哪开始

basic.toValue = @(300);//到哪结束

basic.byValue = @(30);//在自身的基础上增加10

//不希望核心动画回到原来的位置

basic.fillMode = kCAFillModeForwards;

basic.removedOnCompletion = NO;

[self.layer addAnimation:basic forKey:nil];

//第二种关键字

ani.keyPath = @"transform.rotation";

ani.byValue = @(2*M_PI);

--------------关键帧动画-----------------

CAKeyframeAnimation *ani = [[CAKeyframeAnimation alloc]init];

ani.keyPath = @"position";

UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:CGPointMake(100, 100) radius:80 startAngle:0 endAngle:2*M_PI clockwise:1];

ani.path = path.CGPath;

ani.duration = 3;

ani.repeatCount = INT_MAX;

[self.layer addAnimation:ani forKey:nil]

//图标抖动的方案解决

ani.keyPath = @"transform.rotation";

ani.valus = @[@(M_PI_4),@(-,_PI_4),@(M_PI_4)];

```

-----------------组动画----------------

//创建组动画

CAKeyframeAnimation* anim = [[CAKeyframeAnimation alloc] init];

//添加动画

group.animations = @[ anim, anim1 ];

// 设置事件

group.duration = 3;

// 设置次数

group.repeatCount = INT_MAX;

// 3.添加动画到layer上

[self.layer addAnimation:group forKey:nil];

-----------------转场动画type关键字---------------

* fade 交叉淡化过渡

* push 新视图把旧视图推出去

* moveIn 新视图移到旧视图上面

* reveal 将旧视图移开,显示下面的新视图

* cube 立方体翻滚效果

* oglFlip 上下左右翻转效果

* suckEffect 收缩效果,如一块布被抽走

* rippleEffect 水滴效果

* pageCurl 向上翻页效果

* pageUnCurl 向下翻页效果

* cameraIrisHollowOpen 相机镜头打开效果

* cameraIrisHollowClose 相机镜头关闭效果

上一篇下一篇

猜你喜欢

热点阅读