NSView和CALayer

我最近在构建macOS应用时遇到了动画问题。 我无法正确显示转换后的图层。 事情变得很时髦。 因此,我决定花一些时间再次阅读文档。

它带给我以下几点:

  • 查看编程指南
  • 核心动画编程指南

他们有这样的关系:

NSView位于AppKit Framework内部,它可以成为层支持的视图,并添加硬件支持以渲染图形。

重要学习

  1. 使用CALayer后,视觉效果将由硬件渲染。 也就是说,纯NSView由CPU处理
  2. 与UIView相比,NSView具有翻转的坐标系。 NSView中的点(0,0)指向左下角
  3. AppKit和NSView无法提供简单的方法来制作内容动画
  4. 实际上,Core Animation在macOS和iOS上是相同的。 但是,大多数iOS用户会使用UIView进行动画处理
  5. 核心动画利用keyPath定义要进行动画处理的内容
  6. CATransaction可用于显式设置多个属性的动画
  7. 动画完成后,动画属性仍将保持原始值,因此视觉效果将在动画结束时跳回
  8. 在动画代码之后将动画属性设置为最终值
  9. 在设置锚点和其他转换之前,将子视图添加到视图层次结构
  10. CATransform本身是一个值,而不是动画。 进行设置,图层将转换为该特定值。

我已经完成了一个示例项目,以通过沿x轴进行3D变换来展示上述知识。

harryworld / RenderedImageView
RenderedImageView –学习CALayer github.com