繁体   English   中英

什么是 CALayer?

[英]What is a CALayer?

什么是 CALayer(如 UIView 上的layer属性所示),我们将在哪里使用这样的 class?

UIView 是一个聚合类。 它包含事件响应链的“内容”、处理视图层次结构的内容等,以及有关在显示器上绘制什么的内容。 UIView 的 CALayer 只是关于绘制什么的东西:图像位、缩放、变换、动画属性等。

Cocoa Touch UI 是通过合成图层...绘制的,视图位于窗口顶部的视图之上。 CALayer 是组合堆栈中的一个层,它位于某些层的顶部,并且可能位于其他层的下方。 (例如,拆分视图中视图中表格单元格中按钮中的图像等)

如果您想对视图绘制或显示的内容做一些特殊的事情,而这些内容在股票 UIView 类方法中没有提供,则可以通过直接转到 CALayer 来做一些特殊的事情:也许在视图和/或图像,在屏幕外绘制东西,自定义动画等。

Apple CALayer 类参考文档中有更多解释

UIView 建立在 CALayer 之上。那只是一个类,它是 UIViews 的可视化内容。 只需使用 NSLog 打印 UIView 并检查,我们可以看到它的内容层和框架。 使用 Core Graphics 直接与 CALayer 一起工作,而不是 UIView 是 UIKit 元素。 self.view.layer.backgroundColor = [UIColor redColor].CGColor;

iOS 内核 Animation 层(CALayer,Layer)

UIView是第一个入口点,其中包含必要的功能(例如,处理触摸事件[About] ,渲染......)。 CALayer在这种情况下负责一个图形的东西

UIKit -> Core Animation -> OpenGL, Core Graphics -> Hardware

UIView包含根CALayer可以包含 subleyers

let layer = CALayer()
layer.frame = CGRect(origin: CGPoint(x: 0, y: 0), size: CGSize(width: 50, height: 50))
layer.backgroundColor = UIColor.magenta.cgColor
view1.layer.addSublayer(layer)

你可以找到很多使用CALayer的案例:动画、圆角半径、阴影……

您可以将CALayer用于比UIView更多的低级内容

Xcode v11.4 中的调试层

Debug View Hierarchy -> Editor -> Show Layers

[iOS 框架与边界]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM