代码改变世界

iOS UI进阶-2.0 CALayer

  jiangys  阅读(396)  评论(0编辑  收藏  举报
在iOS中,你能看得见摸得着的东西基本上都是UIView,比如一个按钮、一个文本标签、一个文本输入框、一个图标等等,这些都是UIView
其实UIView之所以能显示在屏幕上,完全是因为它内部的一个图层。在创建UIView对象时,UIView内部会自动创建一个图层(即CALayer对象),通过UIView的layer属性可以访问这个层 @property(nonatomic,readonly,retain) CALayer *layer;
当UIView需要显示到屏幕上时,会调用drawRect:方法进行绘图,并且会将所有内容绘制在自己的图层上,绘图完毕后,系统会将图层拷贝到屏幕上,于是就完成了UIView的显示。
换句话说,UIView本身不具备显示的功能,是它内部的层才有显示功能

UIView和CALayer的选择

通过CALayer,就能做出跟UIImageView一样的界面效果。既然CALayer和UIView都能实现相同的显示效果,那究竟该选择谁好呢?
  • 对比CALayer,UIView多了一个事件处理的功能。也就是说,CALayer不能处理用户的触摸事件,而UIView可以。
  • 如果显示出来的东西需要跟用户进行交互的话,用UIView;
  • 如果不需要跟用户进行交互,用UIView或者CALayer都可以
  • 当然,CALayer的性能会高一些,因为它少了事件处理的功能,更加轻量级

 

更详细的使用说明,请参考下面的博客

CALayer1-简介:http://www.cnblogs.com/mjios/archive/2013/04/13/3019335.html

CALayer2-创建新的层:http://www.cnblogs.com/mjios/archive/2013/04/14/3019728.html

CALayer3-层的属性:http://www.cnblogs.com/mjios/archive/2013/04/14/3020291.html

CALayer4-自定义层:http://www.cnblogs.com/mjios/archive/2013/04/14/3020975.html

 

 

编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端
点击右上角即可分享
微信分享提示