我想制作一个在深色背景上有浅色文字的自定义弹出菜单。我知道setView:
的{{1}}方法,我可以使用该方法在深色背景上使用浅色文字绘制每个项目。但是,NSMenuItem
在菜单的顶部和底部以浅色绘制了4个像素高的条带,这几乎破坏了外观。由于NSMenu
没有我可以覆盖的任何公共绘图方法,我无法看到如何摆脱这些条带。
我看到NSMenu
标头有名为NSMenu
和noTopPadding
的私有实例变量。太诱人了!
答案 0 :(得分:2)
我找到了使用未声明方法的解决方案(显然不理想)。首先声明如下:
@interface NSMenu (secret)
- (void) _setHasPadding: (BOOL) pad onEdge: (int) whatEdge;
@end
然后,在显示菜单之前的某个时间,执行:
if ([menu respondsToSelector: @selector(_setHasPadding:onEdge:)])
{
[menu _setHasPadding: NO onEdge: 1];
[menu _setHasPadding: NO onEdge: 3];
}
我的测试表明,这不适用于Snow Leopard,但可以在Lion,Mountain Lion和Mavericks上使用。