gpt4 book ai didi

macos - 我可以删除自定义 NSMenu 的顶部和底部填充吗?

转载 作者:行者123 更新时间:2023-12-03 16:36:57 26 4
gpt4 key购买 nike

我想制作一个在深色背景上有浅色文本的自定义弹出菜单。我知道 NSMenuItemsetView: 方法,我可以使用该方法使每个项目在深色背景上绘制浅色文本。然而,NSMenu 在菜单的顶部和底部以浅色绘制了 4 像素高的 strip ,这几乎破坏了外观。由于 NSMenu 没有任何可以重写的公共(public)绘图方法,因此我不知道如何摆脱这些 strip 。

我看到 NSMenu header 具有名为 noTopPaddingnoBottomPadding 的私有(private)实例变量。太诱人了!

最佳答案

我找到了一个使用未声明方法的解决方案(显然不理想)。首先声明如下:

@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。

关于macos - 我可以删除自定义 NSMenu 的顶部和底部填充吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19394041/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com