【问题标题】:Obj-C - Programmatically setting NSWindow Appearance to NSAppearanceNameVibrantDark, not workingObj-C - 以编程方式将 NSWindow Appearance 设置为 NSAppearanceNameVibrantDark,不起作用
【发布时间】:2019-02-03 05:35:37
【问题描述】:

使用 XCode 版本 9.4.1 (9F2000) 我想动态地允许用户将 Mac 应用程序的主题从 Light 更改为 Dark 等,但我遇到了第一个障碍。

我尝试将以下代码放入applicationDidFinishLaunching 和 ViewController 的viewDidLoad 方法中,但都没有导致主题更改为深色主题。

NSAppearance* appearance = [NSAppearance appearanceNamed:NSAppearanceNameVibrantDark];
    [self.window setAppearance:appearance];

我找不到展示如何以编程方式执行此操作的 Apple 示例。谁能指出我忽略了什么??

D.

【问题讨论】:

  • 您的代码在我的 macOS 10.13.6 上的 Xcode 9.4.1 中的全新非文档项目中绝对完美地工作,在 applicationDidFinishLaunching 中执行,与 10.13 SDK 相关联。你可以试试同样的吗?如果它有效,那么您的代码中正在发生其他事情。

标签: objective-c macos xcode9 theming programmatically


【解决方案1】:

我可以通过将我的代码移动到控制器的viewWillAppear 来让它工作(如下面的示例)。那么所有的主题都是正确的!

- (void)viewWillAppear {
    [super viewWillAppear];

    NSAppearance* appearance = [NSAppearance appearanceNamed:NSAppearanceNameVibrantDark];
    [self.view.window setAppearance:appearance];
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-08
    • 1970-01-01
    • 1970-01-01
    • 2017-01-17
    • 2019-11-11
    • 1970-01-01
    • 2014-07-20
    相关资源
    最近更新 更多