如何使NSSplitView透明而不会让分割器消失?

时间:2013-01-14 19:48:07

标签: cocoa transparent nssplitview nscolor

我已经扩展了我的窗口,因此它有一个按钮内容边框。问题是我的NSSplitView覆盖了边框。我的想法是,我可以使拆分视图透明(但它上面的控件不透明)。

下图显示了我要查找的内容,但缺少拆分器:

Screenshot with missing splitter

查看窗口底部是否有按钮。这是我想要实现的效果,但没有任何运气。我试图使用的代码是:

CALayer *transparentViewLayer = [CALayer layer];
[viewLayer setBackgroundColor:CGColorCreateGenericRGB(
                                                      256.0,
                                                      256.0,
                                                      256.0,
                                                      0)]; //RGB plus Alpha Channel
[splitView setWantsLayer:YES]; // view's backing store is using a Core Animation Layer
[splitView setLayer: transparentViewLayer];

如果我没有设置transparentViewLayer,那么我最终会得到以下结果:

Splitter but hidden bottom bar

显示了spitter,但隐藏了窗口底部栏。我还尝试了子类化NSSplitView并添加以下内容:

- (void) drawRect: (NSRect) dirtyRect
{
    [[NSColor colorWithSRGBRed: 0.0 green: 255.0 blue: 0.0 alpha: 155.0] setFill];
    NSRectFill(dirtyRect);
} // End of drawRect

这给我留下了一个绿色的分割器,窗户底部没有阿尔法。关于如何实现我正在寻找的效果的任何想法? (我希望底部栏带有我的按钮和分割器可见)。

1 个答案:

答案 0 :(得分:0)

在您的子类中,不要覆盖-[NSSplitView drawRect:]。相反,覆盖-drawDividerInRect:并仅在该矩形中绘制分隔符。 始终 consult the documentation 首先当您想要根据自己的意愿“弯曲”课程时。