6

Sto cercando di ottenere il mio NSScrollView (e quindi un NSOutlineView contenuto) per utilizzare uno sfocato NSVisualEffectView con effetto di fusione dietro la finestra.NSVisualEffectView dietro NSScrollView

Ho creato con successo NSVisualEffectView la vista del contenitore e ho inserito la mia vista di scorrimento come subview. Questo sembra funzionare bene (a patto che io renda tutte le mie celle di tabella, tabella, nsscrollview ecc trasparente).

Tuttavia ora ho attivato 'Riduci trasparenza' in Opzioni di accessibilità e tutto ad un tratto ho uno sfondo nero dietro il mio NSScrollView. Ho provato la sottoclasse della vista dell'effetto visivo per scavalcare il metodo drawRect in modo da poter disegnare il mio sfondo, ma ho appena imparato che non è possibile o consigliato.

Come posso rilevare che Riduci trasparenza è attivo e come posso rendere opaca la mia panoramica scroll in modo dinamico?

risposta

6

Mi ci è voluto un po 'per trovarlo, ma ci sono un paio di nuovi metodi su NSWorkspace che è possibile utilizzare per scoprire le preferenze per le nuove funzionalità di accessibilità di OS X Yosemite. -[NSWorkspace accessibilityDisplayShouldReduceTransparency] è quello che vuoi.

Ascoltando per NSWorkspaceAccessibilityDisplayOptionsDidChangeNotification è possibile sapere quando tale preferenza cambia. Tieni presente che dovrai registrarti per tale notifica sul numero corretto NSNotificationCenter, ovvero [[NSWorkspace sharedWorkspace] notificationCenter].

1

Sembra che per ora ho finito col sovrascrivere un genitore NSView che contiene tutto e imposta un colore di sfondo per quello. In questo modo, quando Riduci trasparenza è attivo, lo NSVisualEffectView diventa trasparente e il colore che ottengo è quello visibile sotto di esso. Questo sembra funzionare bene per ora.

+0

Inoltre ho trovato il modo giusto di scoprire se la vibrazione è abilitata, e cioè di controllare questo flag: 'self.effectiveAppearance.allowsVibrancy' – strangetimes