2015-04-07 39 views
7

di responsabilità: Questa domanda è un'estensione this domandatrasparente sfondo di NSTextfield NSPopover

Sto cercando di compilare una tabella in NSPopover (Come si vede nell'immagine)


Problema:.
Non riesco a rendere lo sfondo trasparente a NSTextField.

Stranamente, funziona bene se vista è collegata a NSWindow


(I nomi di finestra a sinistra stanno avendo sfondo trasparente, ma la stessa vista quando visto in NSPopover non dimostra sfondo trasparente per NSTextfield.) enter image description here

Si tratta di un errore in NSPopover o sto facendo qualcosa di sbagliato?


Questo è il mio codice per creare celle di tabella

func tableView(tableView: NSTableView, viewForTableColumn tableColumn: NSTableColumn?, row: Int) -> NSView? { 
    var cell = NSTableCellView(frame: NSMakeRect(0, 0, 100, 40)) 
    var textField = NSTextField(frame: NSMakeRect(0, 0, 50, 20)) 

    // **For transparency** 
    textField.stringValue = nameList[row] 
    textField.bezeled = false 
    textField.editable = false 
    textField.drawsBackground = false 

    cell.addSubview(textField) 
    return cell 
} 

risposta

10

Si tratta di un problema con il campo di testo viene reso vibrante, causando il fondo bianco della vista tabella intorno ad esso per essere reso vibrante. Questa vibrazione causa una modalità di fusione plusl, quindi diventa invisibile).

Questo accade solo in un popover perché si tratta di un contesto vibrante ed è configurato con un aspetto NSAppearanceNameVibrantLight per impostazione predefinita.

Le sessioni 209 e 220 di WWDC2014 discutono un po 'di più sulla vivacità e le note sulla versione 10.10 su NSVisualEffectView/vibrancy.


Per risolvere questo, è possibile impostare l'aspetto della vista tabella alla comparsa NSAppearanceNameAqua.

+0

Purtroppo è una delle cose meno ovvie che una persona leggermente nuova per la piattaforma potrebbe soffrire. – uchuugaka