2

我的操作系统设置为暗模式,我的整个应用程序都可以正常呈现,除了一些动态创建的 NSMenu 实例,它们以旧的浅色样式呈现。

如何让这些菜单使用深色视觉风格呈现?

4

2 回答 2

2

仅当您指定父视图时才会应用深色视觉样式。

如果viewnil这里,将使用旧样式:

NSMenu* menu;
NSView* view; // cannot be nil
[menu popUpMenuPositioningItem:nil atLocation:NSMakePoint(0, 0) inView:view];
于 2019-05-11T19:11:26.023 回答
0

有一个未记录的apperance论点popUpMenuPositioningItem。您必须自定义现有NSMenu类才能使用它:

@interface NSMenu ()
- (BOOL)popUpMenuPositioningItem:(nullable NSMenuItem *)item atLocation:(NSPoint)location inView:(nullable NSView *)view appearance:(nullable NSAppearance *)appearance NS_AVAILABLE_MAC(10_6);
@end

如果你想通过 Swift 在 Swift 中使用它,popUp你必须在“Objective-C Bridging Header”文件中声明它,并在“Swift Compiler - General”下添加 Xcode 项目构建设置的路径

我在这里这里找到了这个解决方案。类扩展在此处记录。

于 2019-11-10T10:55:20.840 回答