应该来说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的一点干货知识,如果有其他观点,还望各位看官指正。
原文地址:http://blog.csdn.net/v5v6_neil/article/details/39902459