图层支持的NSView重叠/顺序

时间:2015-02-17 16:25:39

标签: macos cocoa calayer nsview

我在界面构建器/自动布局的帮助下设置了两个NSView(一个与view1重叠的工具栏),然后在 - (void)awakeFromNib中调用

[self.view1 setWantsLayer:YES];
[self.toolbar setWantsLayer:YES]; 

使视图层支持,以便稍后我可以为它们设置动画。我发现如果我在view1上调用它后调用setWantsLayer,它会在view1上显示,而不是关心界面构建器中的顺序。到目前为止,非常好。

我的问题是:如何在代码中更改视图的顺序。调用

self.toolbar.zPosition = 0;
self.view1.zPosition = 1;

没有做任何事情。因为我对CALayers不那么自信: 有什么我想念的吗? 还有一个很好的CALayers教程 - 我阅读了文档,但没有理解一切(层托管视图,子图层的概念......)

修改

图像以便更好地理解(我想为绿色视图的透明度设置动画,使黑色工具栏位于红色视图上,绿色视图消失。然后返回绿色视图): views overlapping

1 个答案:

答案 0 :(得分:0)

您需要使用addSubview:positioned:relativeTo:添加相对于第一个视图的第二个视图。图层索引仅相对于父图层中的图层,而不是其自身的视图图层。

例如,

[hostingView addSubview:topView
        positioned:NSWindowAbove
        relativeTo:bottomView];