核心动画CALayer

1.我们来简单了解一下CALayer的基本概念:

CALayer是核心动画的基础,可以做圆角、阴影、边框等效果 ;

每个UIView内部都有一个Layer的属性 ;

UIView可以响应事件,而CALayer只负责显示 ;

在实现核心动画时,本质上是将CALayer中的内容转换成位图,从而便于图形硬件的 操纵 ;

2.CALayer的坐标系统 

UIView有frame、bounds和center三个属性

CALayer也有类似的属性,分别为frame、bounds、position、anchorPoint 

3.锚点

anchorPoint的默认值为(0.5,0.5),也就是anchorPoint默认在layer的中心点。

position是layer中的anchorPoint在superLayer中的位置坐标。

frame.origin.x = position.x - anchorPoint.x * bounds.size.width;

frame.origin.y = position.y - anchorPoint.y * bounds.size.height; 

4.CALayer的常用属性

背景颜色,内容,边框,阴影,透明度 

5.提示

提示:

Layer的设计目的不是为了取代视图,因此不能基于CALayer创建一个独立的可视化 组件

Layer的设计目的是提供视图的基本可视内容,从而提高动画的执行效率

除提供可视内容外,Layer不负责视图的事件响应、内容绘制等工作,同时Layer不能 参与到响应者链条中 

6.参考以下代码,可以更好的理解CALyer的一些基本属性和用法

- (void)viewDidLoad {

    [super viewDidLoad];

    

    UIView *view = [[UIView alloc]initWithFrame:CGRectMake(20, 20, 200, 300)];

    view.backgroundColor = [UIColor redColor];

    

    [self.view addSubview:view];

    

    //图层

    //边框 (向view的内部扩展)

    view.layer.borderWidth= 10;//默认是0

    view.layer.borderColor = [UIColor greenColor].CGColor;

    

    //圆角半径

    view.layer.cornerRadius = 50;

    

    //阴影

    //阴影颜色 (默认黑色)

    view.layer.shadowColor = [UIColor grayColor].CGColor;

    //阴影偏移量 (默认是0 0)

    view.layer.shadowOffset = CGSizeMake(-50, 50);

    //阴影的不透明度  (默认是 0 透明)

    view.layer.shadowOpacity = 1;

    

    //内容

    //__bridge: core Foundation对象(CF  core text)[将cf对象的内存管理交给ARC处理]

    view.layer.contents = (__bridge id _Nullable)([UIImage imageNamed:@"1.jpeg"].CGImage);

    

//    //手动管理

//    CGImageRef cgImage = [UIImage imageNamed:@"1.jpg"].CGImage;

//    CGImageRelease(cgImage);

 

// 子视图超出的部分 不显示

//    view.clipsToBounds = YES;

    

    //超出layer的部分 不显示(将阴影裁掉)

    view.layer.masksToBounds = YES;

}

 

posted @ 2016-08-15 19:44  Xcode点点  阅读(133)  评论(0编辑  收藏  举报