AI智能
改变未来

iOS复习记录日记16-layer和核心动画[2020]


CALayer

能看到一个uiview的按钮样子?标签的样子?
是因为CALayer的功劳.
UIview本身不具备显示功能,是因为内部有一个图层CALayer这个属性,提供的显示功能
UIView 负责监听和响应事件
CALayer 负责视图显示内容和动画
UIview提供的backgroundcolor只是CALayer里面的属性.
设置显示的圆角,边宽,阴影,是需要操作layer的.

Layer属性

borderWidth 设置边框宽度
borderColor 设置边框颜色
cornerRadius 设置圆角半径
masksToBounds = YES; //如果有,超出layer的范围就不显示了
contents=(__brideg id)[(UIImage ImageNamed:@“x”).CGImage]//设置图片为内容
anchorPoint 锚点,定位点 取值范围0-1 默认为0.5 0.5

手动创建Layer

CALayer *layer =[CALayer alloc]init];
layer.backgroundColor = [UiColor redColor].CGColor;//设置颜色
layer.points = CGPointMake(200,200);//位置
layer.bouds = CGRectMake(0,0,100,100);//大小
[self.view.layer addSubLayer:layer] 把layer添加到控制器view的layer上

CADIsplayLinks
CADIsplayLinks 按照屏幕刷新频率触发的时钟机制 目前为1秒60一次.
CADisplayLink *link = [CADisplayLink DisplayLinkWithTarget:self select@那个方法执行]
link addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode] 添加到主循环中

核心动画

CoreAnimation是非常强大的动画处理api
COreAnimation是直接作用在CALayer上的,并非UIVIew
核心动画结束后,会回复到原来的位置
设置fillMode=kCAFillModeForwards;
anim.removedOnCompletion=NO; //就不会回复到原来的位置

基本动画
//创建动画对象
CABasicAnimation *anim = [[CABasicAnimation alloc]init];
//设置那个key属性进行动画
anim.keyPath = @“position.x”
anim.fromValue=@(10)
anim.toValue=@(300);
//anim.byValue 相当于自身的基础上累加
//设置执行动画对象
[layer addAnimation:anim forKey:nil]

关键帧动画
//创建动画
CAKeyframeAnimation *anim = [CAKeyframeAnimation]init
//设置关键的点 系统会自动执行
anim.keyPath = @“position”
NSValue *v1 = [NSValue valueWithCGpoints:CGpointsmake()]
anim.values=@[nsvalue1,nsvalue2]
//设置执行时间
anim.druation=5;
anim.repeatCount = 次数;
//设置执行动画对象
[layer addAnimation:anim forKey:nil]

组动画
创建对象group = CAAnimationGroup alloc init
group.animations = 可以放入关键帧动画,基础动画
[layer addAnimation:group forKey:nil]

  • 点赞
  • 收藏
  • 分享
  • 文章举报

pathosis9发布了16 篇原创文章 · 获赞 0 · 访问量 2820私信关注

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » iOS复习记录日记16-layer和核心动画[2020]