2010-11-10 7 views
0

J'ai un NSPanel standard défini sur le style HUD. Je veux changer la couleur d'arrière-plan, principalement parce que je veux avoir une barre d'outils et ne vois aucun moyen de faire un nstoolbar standard sur un HUD ou un moyen de personnaliser l'arrière-plan d'une barre d'outils directement.Fenêtre HUD Cocoa: supprimer la transparence?

Je suis conscient de la multitude de façons de créer une fenêtre entièrement personnalisée et de l'utiliser dans d'autres circonstances. Dans ce cas, je veux toutes les bonnes choses qu'une fenêtre fournit, mais je ne veux pas de transparence. Fait intéressant, je peux changer la couleur de fond, mais pas l'alpha. La définition des valeurs alpha n'a aucun effet sur la fenêtre.

Quelqu'un a-t-il déjà résolu ce problème?

Répondre

0

Set de (à l'intérieur du cliquez panneau pour le sélectionner, pas la barre de titre) vue du contenu du panneau sous-classe à SGPanelView et faire que SGPanelView avec cette mise en œuvre d'une méthode de drawRect de votre classe: SGPanelView, une sous-classe de NSView:

- drawRect:(NSRect)dirtyrect { 
    [[NSColor blackColor] set]; 
    [NSBezierPath fillRect:[self bounds]]; 
} 

Devrait fonctionner. Si cela ne fonctionne pas, essayez de remplacer bounds par frame.


Voir http://developer.apple.com/library/mac/#documentation/cocoa/reference/ApplicationKit/Classes/NSView_Class/Reference/NSView.html pour plus d'informations.

+0

Impossible: la barre d'outils ne fait pas partie du dessin de contentView. La barre d'outils dessine directement l'arrière-plan de la fenêtre, pas la vue du contenu. – SG1

+0

Utilisez [[window contentView] superView] 'pour obtenir l'affichage de la fenêtre. Notez que vous devez modifier le rect, car il inclut la barre de titre. –

Questions connexes