我的应用程序在Mac Os Mojave中有一些UI问题 . 当我切换到Dark Mode时,一些标签和按钮文本内容不可见 . 所以我使用以下代码做了一个workaroud .
var interfaceStyle = NSUserDefaults.StandardUserDefaults.StringForKey("AppleInterfaceStyle");
if (interfaceStyle == "Dark") {
label.textcolor = NSColor.White;
}
这解决了问题,但是如果我在应用程序之间切换回轻模式使用标签颜色将不会改变 . 我需要重新启动应用程序以读取代码并使用默认颜色显示标签 .
任何人都可以面对这个问题吗?当用户更改Mac Os Mojave的外观模式(Dark&Light)时,是否有任何委托方法?
1 回答
您可以使用
KVO
来跟踪主题更改(AppleInterfaceThemeChangedNotification
) .一些类级别的“常量”:
要调用的ObjC选择器的导出方法:
向通知中心添加观察员请求:
注意:我通常在
AppDelegate.DidFinishLaunching
中注册如果不再需要,请删除观察者:
BTW:
NSDistributedNotificationCenter.DefaultCenter.AddObserver
助手/重载在这种情况下无法正常工作......