2012-02-29 11 views
7

Ho un'applicazione con un NSTableView in una finestra. Voglio usare un CALayer come sfondo per l'intera finestra e la vista tabella. In tutti i miei esperimenti fino ad ora, il CALayer disegna sempre su NSTableView, che non è l'effetto che sto cercando. C'è un modo per fare questo lavoro, o sono semplicemente sfortunato a causa della natura delle viste di hosting di layer vs NSViews?Utilizzo di CALayer come sfondo per altre NSViews

La configurazione di prova è una finestra con la consueta combo NSScrollView/NSTableView e una NSView di pari livello nell'ordine di visualizzazione. NSView è impostato per ospitare i livelli con il mio livello personalizzato al suo interno (solo un livello con un set backgroundColor). Ho sperimentato l'impostazione della vista del contenuto della finestra per il backup del livello, oltre alla vista tabella stessa, nonché il wrapping di NSScrollView in un NSView con supporto del livello. Il risultato è sempre lo stesso.

Grazie per qualsiasi suggerimento che potresti essere in grado di fornire.

risposta

2

È semplice. tutte le viste o i livelli sovrapposti dovrebbero essere il supporto dei livelli o l'hosting dei livelli per l'ordine corretto.

è possibile impostare [tableview setWantsLayer:YES]
o semplicemente controllarlo nella scheda dei livelli durante la modifica dell'interfaccia.

+0

Hai provato questo? Nei miei test con un NSScrollView/NSTableView, entrambi impostati per essere supportati dal livello, il CALayer continua a comparire sopra di essi. –

+0

hai provato a riorganizzarli dopo l'inizializzazione? in awakeFromNib? per esempio puoi inviare addSubview alla loro superview nell'ordine corretto. e assicurati che anche superview sia supportato da livelli. – Remizorrr