带有图层的NSView将绘制在所有内容上

时间:2013-08-23 21:34:47

标签: cocoa nsview

我有一个NSView,我更改了一些属性,使其成为圆角矩形,颜色为灰色,并将其添加到我的视图中(在所有内容后面)

float gray = 60.0f/255.0f;
NSView* background = [[NSView alloc] initWithFrame: self.iconContainer.frame];
CALayer *viewLayer = [CALayer layer];
[viewLayer setBackgroundColor:CGColorCreateGenericRGB(gray, gray,gray, 1)]; //RGB plus Alpha Channel
[viewLayer setCornerRadius:5.0f];
[background setWantsLayer:YES]; // view's backing store is using a Core Animation Layer
[background setLayer:viewLayer];  

// Place view behind all other views
[self.iconContainer addSubview:background positioned:NSWindowBelow relativeTo:nil];

然而,不管我尝试什么,该特定视图都被绘制在其他所有内容之上。

1 个答案:

答案 0 :(得分:7)

通常,这种行为是由在子视图上使用Core Animation图层引起的,而superview没有。

在超级视图上启用核心动画图层应该可以解决问题,因为任何子视图都会使用Cora动画图层绘制,使绘图过程符合子视图的顺序。

相关问题