Я написал свой собственный класс, похожий на NSMenu, чтобы показывать результаты динамического поиска ниже NSSearchField
в NSWindow без полей. Он работает хорошо, но не рисует магию 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];
}
}
}