本文主要是介绍CALayer与UIView的关系和作用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一,CALayer原理
在iOS中,你能看得见摸得着的东西基本上都是UIView,比如一个按钮、一个文本标签、一个文本输入框、一个图标等等,这些都是UIView。其实UIView之所以能显示在屏幕上,完全是因为它内部的一个图层。在创建UIView对象时,UIView内部会自动创建一个图层(即CALayer对象),通过UIView的layer属性可以访问这个层。当UIView需要显示到屏幕上时,会调用drawRect:方法进行绘图,并且会将所有内容绘制在自己的图层上,绘图完毕后,系统会将图层拷贝到屏幕上,于是就完成了UIView的显示。那么这个过程是怎么的呢?
首先可以认为,UIView是其属性CALayer的delegate,即:
UIView *view;
view.layer.delegate == view;
view的完整显示过程:
1. view.layer会准备一个Layer Graphics Contex(图层类型的上下文)
2. 调用view.layer.delegate(view)的drawLayer:inContext:,并传入刚才准备好的上下文
3. view的drawLayer:inContext:方法内部又会调用view的drawRect:方法
4. view就可以在drawRect:方法中实现绘图代码,所有东西最终都绘制到view.layer上面
5. 系统再将view.layer的内容拷贝到屏幕,于是完成了view的显示
通过操作CALayer对象,可以很方便地调整UIView的一些外观属性,比如:
> 阴影> 圆角大小
> 边框宽度和颜色
代码示例:
//设置图层的颜色self.yellowView.layer.backgroundColor = [UIColor blueColor].CGColor; //设置圆角 self.yellowView.layer.cornerRadius = 15; //设置阴影 //设置阴影的颜色 self.yellowView.layer.shadowColor = [UIColor greenColor].CGColor; //阴影的透明度 self.yellowView.layer.shadowOpacity = 0.5; //阴影的显示起始位置 self.yellowView.layer.shadowOffset = CGSizeMake(20,20) ;//设置形变属性self.imageView.layer.transform = CATransform3DMakeTranslation(30,50,0);self.imageView.layer.transform = CATransform3DMakeScale(1,2,1);
这篇关于CALayer与UIView的关系和作用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!