ボタンといくつかのアイコンでNSVisualEffectView
が結ばれています。このビューのmaterial
は、もともとNSVisualEffectMaterialDark
と同じです。つまり、「Vibrant Dark」です。NSVisualEffectViewの変更に1回以上のクリックで変更する
私が書いた次のコードは、次の操作を行うためにをを想定している。
1)ビューの材料はNSVisualEffectMaterialDark
かNSVisualEffectMaterialLight
2であるかどうかを検出)がYES/NOそれぞれ
3にBOOL isDark
を変更)現在のビューに基づいて、ビューのappearance
、つまりmaterial
をダークからライト/ライトからダークに変更します。
問題は、私がアプリケーションを実行してボタンをクリックすると、NSVisualEffectView
の色が飽和した暗い色から少ない色に変化し、明るくないことになります。
この問題を解決し、それが起こらないようにするにはどうすればよいですか?
注:NSVisualEffectView
の名前が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;
}
}