2014-09-11 19 views
10

In uno dei discorsi del WWDC 2014 sulla nuova interfaccia utente di Yosemite, si dice di evitare l'uso di NSVisualEffectView nei livelli mascherati. Purtroppo strato di mio punto di vista ha una maschera di forma, e di conseguenza la vista effetto visivo in esso ha un brutto frastagliato effetto di bordo:NSVisualEffectView con maschera ha angoli frastagliati

gross

però so che deve essere in qualche modo possibile per creare un effetto visivo mascherato visualizzare, in parte a causa di 2 motivi:

  • La proprietà maschera di immagine su NSVisualEffectView produce una superficie liscia, maschera anti-alised (ma richiede uno sfondo smascherato dietro di esso, e non solo una vista padre senza maschera)
  • NSPopover e NSMenu sembrano essere in grado di realizzare una maschera liscia che cambia con dimensioni:

Smooth

Also smooth

Sebbene sia doubtable da indipendentemente da fatto che usano NSVisualEffectView, e non una vista offuscata personalizzata .

C'è un modo per ottenere questa maschera liscia che non si basa su un'immagine maschera ma piuttosto su un livello di tracciato o di forma?

+1

Perdonami per averlo chiesto, ma perché non usare solo un NSPopover? (soprattutto dal momento che Apple afferma che è necessario evitare di mascherare NSVisualEffectView) –

+0

@ DavidRönnqvist il suo modo di vedere come la finestra ha una vista a scorrimento che è mascherata, la freccia sotto l'icona è in realtà una parte della vista del contenuto e il testo lo attraverserà . NSPopover non maschera il suo contenuto in modo che tutto ciò che tenta di essere visualizzato all'interno della freccia venga troncato. – Luke

+1

Inoltre, un NSPopover crea in realtà un effetto leggermente diverso rispetto a un NSVisualEffectView. Ecco un esempio: https://devforums.apple.com/message/1061741#1061741. Un altro esempio: la barra del menu OS X ha lo stesso effetto sfocato di NSVisualEffectView mentre l'NSMenus sembra più simile a un NSPopover. Se apri semplicemente un menu nella barra dei menu, puoi facilmente vedere la differenza tra i due effetti. – iMaddin

risposta

0

stavo cercando di raggiungere questo obiettivo con una vista NSWindow un po 'indietro e mi sono imbattuto in questa libreria impressionante: https://www.cocoacontrols.com/controls/waythedarkside

Esso consente di aggiungere una luce o macchia scura alla vista/sfondo. Penso che questo sia quello che stai cercando :)