CALayer

作者: 6灰太狼9 | 来源:发表于2018-07-06 11:03 被阅读8次

UIView和CALayer关系

1.每个view都有layer的属性,CALayer 就比 UIView 轻量级,且CALayer不能响应事件。而且他们之间存在代理关系。

view.layer.delegate = view
WechatIMG8.jpeg

2.当一个subview被添加到了另一个superview上,那个这个subview的layer也会被添加到superview的layer上。

3.UIView本身,更像是一个CALayer的管理器,访问它的跟绘图和跟坐标有关的属性,例如frame,bounds等等, 实际上内部都是在访问它所包含的CALayer的相关属性。

4.UIView的layer树形在系统内部,被系统维护着三份copy(这段理解有点吃不准)。
第一份,逻辑树,就是代码里可以操纵的,例如更改layer的属性等等就在这一份。
第二份,动画树,这是一个中间层,系统正在这一层上更改属性,进行各种渲染操作。
第三份,显示树,这棵树的内容是当前正被显示在屏幕上的内容。
这三棵树的逻辑结构都是一样的,区别只有各自的属性。

CALayer的属性

CALayer很多属性在修改时都能形成动画效果,这种属性称为“隐式动画属性”。隐式属性动画的本质是这些属性的变动默认隐含了CABasicAnimation动画实现。

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    self.layer = [[CALayer alloc] init];
    self.layer.frame = CGRectMake(100, 100, 200, 200);
    self.layer.backgroundColor = [UIColor redColor].CGColor;
    [self.view.layer addSublayer:self.layer];
    self.layer.cornerRadius = 100;
    
}

-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{

    UITouch *touch = [touches anyObject];
    CGFloat width = self.layer.bounds.size.width;
    if (width==200) {
        width = 100;
    }else{
        width = 200;
    }
    self.layer.bounds = CGRectMake(0, 0, width, width);
    self.layer.position = [touch locationInView:self.view];
    self.layer.cornerRadius = width/2;
}
QQ20180706-104858.gif

相关文章

  • 动画 (1) ----- CALayer

    CALayer 和 UIView 联系CALayer的相关属性CALayer之隐式动画 一. CALayer 和 ...

  • CALayer与UIView的区别

    CALayer与UIView的区别 基础 CALayer的定义 CALayer的基础 CALayer和UIView...

  • UIView和CALayer

    1. UIView和CALayer CALayer负责显示内容contents UIView为CALayer提供现...

  • 设置view任意边框border

    CALayer *bottomBorder = [CALayer layer]; bottomBorder.f...

  • CALayer 简介

    CALayer1-简介CALayer2-创建新的层 CALayer3-层的属性 CALayer4-自定义层 CAL...

  • CALyer介绍

    CALayer1-简介CALayer2-创建新的层CALayer3-层的属性CALayer4-自定义层 注意点 第...

  • iOS-view圆角与阴影并存

    CALayer *subLayer = [CALayer layer];CGRect fixframe = vie...

  • CALayer(一)

    CALayer属性 view和layer的关系 CALayer属性表如下 CALayer和UIView的区别 1....

  • UIView和CALayer

    UIView和CALayer和有什么关系 UIview中有个属性layer,是CALayer类型。 CALayer...

  • 问题汇总

    1、UIView和CALayer区别UIView和CALayer的区别.UIView相对于CAlayer来说就多了...

网友评论

      本文标题:CALayer

      本文链接:https://www.haomeiwen.com/subject/vwrvuftx.html