NSView和CALayer
我最近在构建macOS应用时遇到了动画问题。 我无法正确显示转换后的图层。 事情变得很时髦。 因此,我决定花一些时间再次阅读文档。
它带给我以下几点:
- 查看编程指南
- 核心动画编程指南
他们有这样的关系:
NSView位于AppKit Framework内部,它可以成为层支持的视图,并添加硬件支持以渲染图形。
重要学习
- 使用CALayer后,视觉效果将由硬件渲染。 也就是说,纯NSView由CPU处理
- 与UIView相比,NSView具有翻转的坐标系。 NSView中的点(0,0)指向左下角
- AppKit和NSView无法提供简单的方法来制作内容动画
- 实际上,Core Animation在macOS和iOS上是相同的。 但是,大多数iOS用户会使用UIView进行动画处理
- 核心动画利用keyPath定义要进行动画处理的内容
- CATransaction可用于显式设置多个属性的动画
- 动画完成后,动画属性仍将保持原始值,因此视觉效果将在动画结束时跳回
- 在动画代码之后将动画属性设置为最终值
- 在设置锚点和其他转换之前,将子视图添加到视图层次结构
- CATransform本身是一个值,而不是动画。 进行设置,图层将转换为该特定值。
我已经完成了一个示例项目,以通过沿x轴进行3D变换来展示上述知识。
harryworld / RenderedImageView
RenderedImageView –学习CALayer github.com