Вы можете использовать KVO
для отслеживания изменений темы (AppleInterfaceThemeChangedNotification
).
Несколько "констант" уровня класса:
readonly NSString themeKeyString = new NSString("AppleInterfaceThemeChangedNotification");
readonly NSString dark = new NSString("Dark");
readonly Selector modeSelector = new Selector("themeChanged:");
Метод экспорта для селектора ObjC для вызова:
[Export("themeChanged:")]
public void ThemeChanged(NSObject change)
{
var interfaceStyle = NSUserDefaults.StandardUserDefaults.StringForKey("AppleInterfaceStyle");
if (interfaceStyle == "Dark")
{
Console.WriteLine("Now Dark");
}
else
{
Console.WriteLine("Now not Dark");
}
}
Добавить запрос наблюдателя в центр уведомлений:
NSDistributedNotificationCenter.GetDefaultCenter().AddObserver(this, modeSelector, themeKeyString, null);
Примечание: я обычно регистрирую это в AppDelegate.DidFinishLaunching
Удалите наблюдателя, если он вам больше не нужен:
NSDistributedNotificationCenter.GetDefaultCenter().RemoveObserver(this, themeKeyString);
Кстати: NSDistributedNotificationCenter.DefaultCenter.AddObserver
помощники / перегрузки не работают должным образом в этом случае ...