Comment puis-je souligner manuellement un NSPopUpButtonCell en dessinant (dessiner en utilisant blanc au lieu de noir)?

StackOverflow https://stackoverflow.com/questions/1162414

Question

J'ai une cellule personnalisée composée de plusieurs cellules, dont un est un NSPopUpButtonCell.

Lors de l'élaboration de ma cellule personnalisée en surbrillance, je veux faire toutes les sous-cellules pour mettre en évidence aussi bien (généralement en tournant blanc).

Avec, par exemple un NSTextCell, si je l'appelle setHighlighted:YES avant d'appeler drawWithFrame:inView la cellule sera tirée avec du texte blanc, exactement comme je le veux.

Cela ne fonctionne pas avec NSPopUpButtonCells. Le texte continue de dessiner en noir.

Il semble que cela devrait être possible, car une chute NSPopUpButtonCell dans un NSTableView met en évidence correctement.

Quelqu'un peut-il me diriger dans la bonne direction pour fixer cela?

Était-ce utile?

La solution

Où êtes-vous accueillez cette coutume + sous-classe composite NSCell?

-setHighlighted: OUI est pas ce que vous recherchez. De la documentation:

  

Par défaut, cette méthode ne fait rien.   La classe NSButtonCell remplace cette   Procédé pour dessiner le bouton avec le   apparence spécifiée par   NSCellLightsByBackground,   NSCellLightsByContents, ou   NSCellLightsByGray.

En général, la vue hôte pour une cellule attribuer le style d'arrière-plan de la cellule, et la cellule utilisera au temps du tirage au sort pour s'afficher correctement. Propager le style d'arrière-plan de la cellule maître aux sous-cellules.

- (void)drawInteriorWithFrame:(NSRect)cellFrame inView:(NSView *)controlView
{
    NSRect textRect, popUpRect;
    NSDivideRect(cellFrame, &textRect, &popUpRect, NSWidth(cellFrame) / 2, NSMinXEdge);

    /* Draw the text cell (self) */
    [super drawInteriorWithFrame: textRect inView: controlView];

    /* Draw our compound popup cell - create & release every time drawn only in example */
    NSPopUpButtonCell *popUpCell = [[NSPopUpButtonCell alloc] initTextCell: @"popup title"];
    [popUpCell setBordered: NO];
    [popUpCell setBackgroundStyle: [self backgroundStyle]];
    [popUpCell drawWithFrame: popUpRect inView: controlView];
    [popUpCell release];
}

Si vous accueillez cette cellule composite dans un NSTableView, cela devrait être suffisant pour obtenir l'arrière-plan correct pour les lignes sélectionnées.

Si vous hébergez dans votre propre point de vue, vous devrez peut-être faire un travail supplémentaire. (Et la nécessité de fournir des détails supplémentaires sur l'environnement hôte avant de pouvoir offrir des conseils.)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top