#CALayer

##1、CALayer与UIView之间不得不说的秘密 在咱们学习使用CALayer以前,咱们先来回顾下UIView的基础建立和使用。 ###一、UIView的基本建立建立和设置 首先咱们来看看UIView的简单建立和一些简单的设置,以及怎样将建立好的UIView添加到VIew界面上进行显示的。学习

//利用初始化的方式建立一个UIView并固定UIView在View上的显示位置
    UIView *view = [[UIView alloc] initWithFrame:CGRectMake(10, 100, 330, 200)];
    //设置VIew上的背景颜色
    view.backgroundColor = [UIColor redColor];
    
    //将建立好的UIView添加到主界面View上
    [self.view addSubview:view];

从上面的示例代码中咱们能够看出来,建立一个UIView是很简单的,同时设置它的各方面的属性也是很简单的,只须要根据它的属性代码来设置就行了,最后将建立设置好的UIView添加到主界面view上进行显示就行了 ###二、CALayer的基本建立和设置 上面咱们已经了解了UIView的简单的建立和设置,那么这里咱们也来看看CALayer的简单的建立和设置字体

// 利用初始化的方式来建立一个CALayer,同时固定其初始显示的位置和设置相应的属性
    CALayer *layer = [[CALayer alloc] init];
    layer.frame = CGRectMake(10, 320, 330, 200);
    //设置layer的显示颜色
    layer.backgroundColor = [UIColor blueColor].CGColor;
    
        // 将图层添加到父图层
    [self.view.layer addSublayer:layer];

###三、CALayer和UIView之间的相同点了不一样点 经过上面两个视图的建立示例代码咱们能够看出来两个视图之间存在相同点也存在不一样点:code

相同点:图片

  • 1)、CALayer和UIView的建立是比较类似的,都是能够经过初始化方式来建立,并且显示时须要固定显示位置的。
  • 2)、CALayer和UIView的属性设置基本上是同样的都是能够经过相对应的属性直接去设置的。
  • 3)、CALayer和UIView都是建立好以后须要主动添加到主视图上面才能显示。

不一样点:ci

  • 1)、CALayer和UIView两个视图之间的显示层次不一样,CALayer是主要的显示层,能够理解为UIVIew其实就是基于CALayer层上的。(这只是我我的的理解,若是有误,还望各位大大指点迷津。)
  • 2)、CALayer和UIView的父视图不一样,经过上面的示例代码咱们能够看出来UIView的父视图是VIew,而CALayer的父视图倒是[self.view.layer]

#2、CALayer的基本设置 上面咱们看了CALayer的基本建立和一些简单的基本属性,那么接下来咱们来看看CALayer视图的一些基本设置;string

##一、简单属性的设置it

属性名 用途 备注
bounds 尺寸 可用CGRectMake来肯定视图的显示尺寸
position: 定位点 肯定CAlayer视图的中心定位点
anchorPoint 锚点 决定layer上的哪一个点在 position 点上,默认(0.5, 0.5),范围:(0,0) ~ (1,1)
zPosition z方向的层级 用来肯定CALayer视图在z方向上的视图
cornerRadius 设置圆角 设置视图四个角的圆滑弧度,使其看着没有那么锐利
masksToBounds 剪切 是否能够裁剪多余的图层,默认为NO

对于这些简单属性的设置我就不一一罗列了,其实都是同样的都是经过上面的属性来定义就好。eg:io

//  尺寸
    layer.bounds = CGRectMake(0, 0, 200, 200);
    //  定位点
    layer.position = self.view.center;
    
    // 锚点、支点
    layer.anchorPoint = CGPointMake(0.5, 0.5);

以上则是CALayer的一些基本属性的设置,固然除去这些简单基本属性还有一些其余相对来讲稍显复杂的属性,那么下面我就来为你们简单的介绍一些CALayer中的一些稍显复杂的属性。table

##二、复杂(特殊)属性的设置基础

  • 1)、当咱们在使用CALayer时,有时候确定须要去设置视图的边框之类的,好比说去设置视图的边框样色和宽度的。eg
//设置CALayer视图的边框颜色和宽度
    layer.borderWidth = 5;
    layer.borderColor = [UIColor lightGrayColor].CGColor;
  • 2)、同时当咱们在使用CALayer时还能够去设置CALayer视图中的一些专有的属性,好比说咱们须要将CALayer视图进行美化,那就能够去设置它的阴影: 尺寸、颜色、透明度、圆角。eg
// 设置阴影、 尺寸、
    layer.shadowOffset = CGSizeMake(10, 5);
    //设置颜色
    layer.shadowColor = [UIColor redColor].CGColor;
    //设置透明度,透明度通常为(0~1)
    layer.shadowOpacity = 0.5;
    //设置圆角,圆角值都是大于0的数,数值越大圆角幅度越大
    layer.shadowRadius = 10;
  • 3)、为CALayer中填充内容,首先咱们先来看看填充图片内容是怎么填充的。 eg:
layer.contents = (__bridge id _Nullable)([UIImage imageNamed:@"image4.jpg"].CGImage);

经过上面这个代码咱们能够看出来给CALayer中填充图片内容再也不是想UIView中那样的直接填充了,而是须要将 UIImage 桥接(__bridge)到CGImage,注意:(__bridge id _Nullable),这个是用来将UIVIew中的一些控件转换为CALayer中可使用的关键代码

  • 4)、其次咱们再来看看CALayer中使用文字怎么填充(使用layer CATextLayer 子类填充文字) 由于CATextLayer是基于CALayer上的子类,因此咱们在使用时它自身也有一些相对应的属性须要咱们去设置,下面咱们一块儿来看看CATextLayer的一些使用设置。eg
//建立CATextLayer
    CATextLayer *textLayer = [[CATextLayer alloc] init];
    //肯定位置
    textLayer.frame = CGRectMake(10, 550, 300, 30);
	//设置填充内容
    textLayer.string = @"这是layer填充的文字内容";
   
    //设置CATextLayer在没有显示字体以前的颜色
    textLayer.foregroundColor = [UIColor blackColor].CGColor;
    //设置CATextLayer 的背景颜色
    textLayer.backgroundColor = [UIColor redColor].CGColor;
    //设置显示的字体高度和须要开辟显示字体的宽度
    textLayer.font = (__bridge CFTypeRef _Nullable)([UIFont systemFontOfSize:20 weight:500]);
    //设置显示的文字高度
    textLayer.fontSize = 20;
    //设置文字对齐方式
    textLayer.alignmentMode = @"center";

以上就是CALayer的简单的建立和一些简单的属性设置,今天咱们就介绍到这里,明天咱们再来介绍CALayer的一些基本使用!