// Set up the root layer.
[[self.aViewController view] setLayer:[CALayer layer]];
[[self.aViewController view] setWantsLayer:YES];
// Set up a sublayer.
CALayer *sublayer = [CALayer layer];
[self.aViewController.view.layer addSublayer:sublayer];
// Repeat if you need additional sublayers. There's a name property if you need to distinguish between them.
1 回答
我只是在NSView上设置了一个CALayer动画,它有嵌套的子视图,NSScrollViews,它运行正常 . 我认为限制是重叠的叠加视图 . (后者的问题是没有指定的绘图顺序;不可预测哪个视图将显示在顶部 . )
但是,如果您还想将变换应用于子视图,则必须分别为它们设置图层 . 或者,是的,您可以转储子视图并将所有内容放在单个视图的CALayers上 . 您可以使用边界和位置属性控制其大小和位置 . (注意位置是从中心,而不是从左下方,除非您更改锚点 . )
如果您正在进行图层托管,请不要将转换应用于根层(view.layer) . 相反,创建一个新的CALayer,向其添加内容,向其添加变换,并将其作为子层应用于根层 . 避免直接使用根层 .
层托管设置的快速示例: