【发布时间】:2023-04-05 23:53:01
【问题描述】:
我编写了自己的 NSMenu 类,以在无边界 NSWindow 中的 NSSearchField 下方显示动态搜索结果。它运行良好,但如果我在子视图的顶部添加一些填充,则无法正确绘制 selectedMenuItemColor 的魔力。我在容器视图的顶部放置了一个 5 像素的填充来模仿 NSMenu,当我这样做时,蓝色选择的渐变看起来会消失。图片和代码应该清楚地说明这一点:
这是我的项目视图中的 drawRect 代码(记住这只是一个普通的 NSView):
-(void) drawRect:(NSRect)dirtyRect {
CGRect b = self.bounds;
if (selected) {
[NSGraphicsContext saveGraphicsState];
[[NSColor selectedMenuItemColor] set];
NSRectFill( b );
[NSGraphicsContext restoreGraphicsState];
if (textField) {
textField.textColor = [NSColor selectedMenuItemTextColor];
}
} else {
[[NSColor clearColor] set];
NSRectFillUsingOperation(b, NSCompositeSourceOver);
if (textField) {
textField.textColor = [NSColor blackColor];
}
}
}
【问题讨论】:
-
当我尝试使用
selectedMenuItemColor时,我只得到深蓝色背景,而不是它上面的较亮渐变,如屏幕截图所示。您是否需要做一些特别的事情才能让它出现? -
不,我没有。想要粘贴我可以查看的要点吗?