文档章节

#CALayer

落难的青蛙
 落难的青蛙
发布于 2016/09/06 19:59
字数 1529
阅读 7
收藏 0

##一、CALayer与UIView之间不得不说的秘密 在我们学习使用CALayer之前,我们先来回顾下UIView的基础创建和使用。 ###1、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上进行显示就好了 ###2、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];

###3、CALayer和UIView之间的相同点了不同点 通过上面两个视图的创建示例代码我们可以看出来两个视图之间存在相同点也存在不同点:

相同点:

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

不同点:

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

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

##1、简单属性的设置

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

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

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

以上则是CALayer的一些基本属性的设置,当然除去这些简单基本属性还有一些其他相对来说稍显复杂的属性,那么下面我就来为大家简单的介绍一些CALayer中的一些稍显复杂的属性。

##2、复杂(特殊)属性的设置

  • 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的一些基本使用!

© 著作权归作者所有

共有 人打赏支持
上一篇: CALayer
落难的青蛙
粉丝 3
博文 3
码字总数 4874
作品 0
成都
程序员
私信 提问
CALayer 的简单使用

CALayer是被定义在QuartzCore中,因此想要使用CALayer就要导入该框架,并在代码前导入框架的头文件 一,什么是CALayer 1,在创建UIView对象时,UIView内部会自动创建一个层(CALayer对象,通...

刘波100
2016/08/25
7
0
ios 开发中CALayer的用法即UIView.layer

CALayer 是一个很经常使用的到的 Object,很常用,也很重要,同时又有比较多的属性,嗯,一定要详细了解下 CALayer 的原理很难懂,由于我目前只注重运用,所以就说那些在实际开发中能用到的一...

andyhe91
2013/05/09
0
1
UIView和CALayer

UIView和CALayer的关系 -CALayer负责视图中显示内容和动画 -UIView负责监听和响应事件 在iOS中,你能看得见摸得着的东西基本上都是UIView,比如一个按钮、一个文本标签、一个文本输入框、一...

KevinEmily
2016/07/01
32
0
IOS动画(1)CALayer

参考博客: http://geeklu.com/2012/09/animation-in-ios/ http://www.cnblogs.com/kenshincui/p/3972100.html#calayer CALayer是CoreAnimation部分的内容,CALayer的概念类似于photoshop中层......

北方人在上海
2016/08/10
31
0
UIView和CALayer的纠葛

引 我们都知道UIView和CALayer,即使不知道,平时的开发中也一定遇到过,比如要设置UIView的frame,利用view.layer来设置圆角等等,那这两者到底是什么关系?为什么又要有两个类来处理呢? ...

cloudox_
2017/09/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

泛型就这么简单

前言 从今天开始进入Java基础的复习,可能一个星期会有一篇的<十道简单算法>,我写博文的未必都是正确的~如果有写错的地方请大家多多包涵并指正~ 今天要复习的是泛型,泛型在Java中也是个很...

群星纪元
21分钟前
0
0
大数据提醒你:中国这些古建筑,可能是下一个巴黎圣母院!

大家晚上好,我是今天的提笔人嗅嗅。 巴黎圣母院失火事件让我的心情很沉重,一句无关痛痒的安慰“巴黎不哭”,已经不能表达我对这场文化之殇的惋惜之痛,人类伟大的建筑在一瞬间被毁灭。 世界...

forespider
32分钟前
0
0
mysql函数substring_index的用法

substring_index 按索引字符位进行截取字符串 substring_index(“待截取的字符串”,“截取数据依据的字符”,截取字符的位置N) 第三个参数可正,可负。正数表示索引字符前面的字符串,负数...

echojson
32分钟前
0
0
好程序员web前端分享用CSS和JS打造一个简单的图片编辑器

好程序员web前端分享用CSS和JS打造一个简单的图片编辑器,本文主要是利用CSS的 filter和简单的Jquery代码来实现一个简单的图片编辑器,包括对图片的透明度,黑白,图片亮度等调节。 CSS filt...

好程序员IT
42分钟前
2
0
浅析spring mvc的细节

spring mvc 整体结构 系统监听到请求 -> 通知tomcat -> 根据web.xml 通知相应的拦截器(spring mvc 通常指DispatcherServlet) --> 检查url是否有相匹配的请求实现 --> 拿到请求实现bean的适配...

最爱肉肉
43分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部