Objective c Obj-C-以编程方式将NSWindow外观设置为NSAppearanceNameVibrantDark,不起作用
使用XCode 9.4.1版(9F2000),我想动态地允许用户将Mac应用程序的主题从浅色改为深色等,但我遇到了第一个障碍 我尝试将以下代码放入Objective c Obj-C-以编程方式将NSWindow外观设置为NSAppearanceNameVibrantDark,不起作用,objective-c,macos,xcode9,theming,programmatically,Objective C,Macos,Xcode9,Theming,Programmatically,使用XCode 9.4.1版(9F2000),我想动态地允许用户将Mac应用程序的主题从浅色改为深色等,但我遇到了第一个障碍 我尝试将以下代码放入ApplicationIDFinishLaunching和ViewController的viewDidLoad方法中,但都没有导致主题更改为暗主题 NSAppearance* appearance = [NSAppearance appearanceNamed:NSAppearanceNameVibrantDark]; [self.window
ApplicationIDFinishLaunching
和ViewController的viewDidLoad
方法中,但都没有导致主题更改为暗主题
NSAppearance* appearance = [NSAppearance appearanceNamed:NSAppearanceNameVibrantDark];
[self.window setAppearance:appearance];
我找不到一个苹果的示例来演示如何通过编程实现这一点。有人能指出我忽略了什么吗
D.我可以通过将代码移动到控制器的
视图来让它工作(根据下面的示例)。那么所有的主题都是正确的
- (void)viewWillAppear {
[super viewWillAppear];
NSAppearance* appearance = [NSAppearance appearanceNamed:NSAppearanceNameVibrantDark];
[self.view.window setAppearance:appearance];
}
您的代码在macOS 10.13.6 for me上的Xcode 9.4.1中的一个全新的非文档项目中运行得非常完美,该项目在ApplicationIDFinishLaunching
中执行,并与10.13 SDK链接。你能试试同样的吗?如果它起作用,那么代码中会发生其他事情。