У меня есть NSVisualEffectView
, подключенный кнопкой и значками. material
этого вида первоначально равен NSVisualEffectMaterialDark
Другими словами, Vibrant Dark.Редактирование NSVisualEffectView требует нескольких кликов для изменения.
Следующий код, который я написал это должен сделать следующее:
1) Обнаружить, если материал вида не NSVisualEffectMaterialDark
или NSVisualEffectMaterialLight
2) Измените в BOOL isDark
к ДА/НЕТ соответственно
3) Измените вид appearance
, т. Е. material
, от Dark to Light/Light to Dark на основе текущего вида.
Проблема заключается в том, что когда я запускаю приложение и нажимаю кнопку, цвет NSVisualEffectView
меняется от насыщенного темного до менее одного, а не от света, как предполагается.
Что я могу сделать, чтобы исправить эту проблему и предотвратить ее?
Примечание: имя по NSVisualEffectView
«s является sideBar
, имя кнопки является lightButton
и isDark
изначально установлен на YES
.
Вот мой код:
-(IBAction)toggleLighting:(id)sender{
if (self.sideBar.material == NSVisualEffectMaterialDark){
_lightButton.title = (@"Dark Mode");
[_lightButton setImage:[NSImage imageNamed:@"Dark Mode Icon"]];
[_lightButton setAlternateImage:[NSImage imageNamed:@"Dark Mode Icon (Alt)"]];
isDark = YES;
NSLog(@"Changed to Light Theme");
} else if (self.sideBar.material == NSVisualEffectMaterialLight){
_lightButton.title = (@"Light Mode");
[_lightButton setImage:[NSImage imageNamed:@"Light Mode Icon"]];
[_lightButton setAlternateImage:[NSImage imageNamed:@"Light Mode Icon (Alt)"]];
isDark = NO;
NSLog(@"Changed to Dark Theme");
}
if (isDark==YES){
_sideBar.material = NSVisualEffectMaterialLight;
isDark = NO;
} else if (isDark==NO) {
_sideBar.material = NSVisualEffectMaterialDark;
isDark = YES;
}
}