首页 > 代码库 > 绝对干货 CALayer几点实际用法

绝对干货 CALayer几点实际用法

      应该来说CALayer是一个比较底层的类,每一个UIView里面封装有一个UILayer的属性(其实我们点击UIView进去也可以看见这个属性)。在使用前需要导入QuartzCore框架,然后再需要设置CALayer的地方引用头文件QuartzCore.h。

一.简单UIView处理

接下来就介绍下它常用的几个地方:

1)圆角:


2)边框:


3)阴影:



二.对于层次较多的处理。

上面三个方法简单粗暴,直接解决问题。

那是不是有了这个就可以设置所有圆角,边框或者阴影了呢?

接下来我们来看另外一种实例,平时难免遇见的就是对 图片的圆角处理,我们尝试着使用上面的第一条来对图片进行处理。

1)设置图片圆角


这样看来是不是就会出现我们上面所说的情况呢?是不是图片就会圆角处理呢?

如果你亲自代码尝试后,就会奇怪的发现不是这样的,图片依旧是原样。那么这是什么原因呢?

原因就在于imageView图层不止有一个,我们尽管对该layer进行了设置圆角,其实仅仅对父图层进行了处理,但是上面的图片还是没有处理。这个时候就需要引入我们iOS中一个专业术语叫做“遮罩”。可以看下面代码

[imageView.layer setMasksToBounds:YES];
这个时候如果再来观察,就会发现我们的图片已经圆角了。这个“遮罩”起的作用就是让所有视图随着俯视图的layer变化而变化。


2)设置图片边框

跟上面设置圆角一样,能够正常显示。

3)设置图片阴影

我们会发觉这个时候,尽管我们设置了“遮罩”,但是依旧没有阴影。

但是假如我们将这个“遮罩”注释掉后,图片阴影出现了。

经过查看资料,发现其实这一点是苹果处理比较不完美的地方,这样就使得我们在使用的时候,需要在阴影以及圆角之间进行取舍,究竟使用阴影呢还是使用圆角呢?当然这个根据客户需求来。假如客户既想实现圆角又要阴影的话,我们只能跟UI设计师进行合作了。


三.如何用CALayer来设置形变

这里的形变指的是UIView的变化,比如imagev的放大缩小,旋转等等。

这点的学习可以加深我们的动画内容理解。

直接上代码:


这里就可以实现imageView形变。

我们还可以使用KVC幅值的原理来进行设置:


依旧能够正常实现。这里可以体现出KVC 的高大尚了吧。


这就是CALayer的一点干货知识,如果有其他观点,还望各位看官指正。







绝对干货 CALayer几点实际用法