Domanda

Voglio creare un NSPopUpButton con un'immagine attiva personalizzata. Ho due immagini, una per inattiva, e un altro per attiva. In Interface Builder ho impostare l'immagine e Alt. Immagine per il NSPopUpButton. L'immagine sta mostrando correttamente, ma quando clicco sul pulsante viene visualizzato il pulsante di stato standard scuro al posto del Alt. Immagine.

Ecco uno screenshot del pannello costruttore di interfaccia: http://cl.ly/0D2c0Y2y0f1Z462d311X

Come posso configurare il NSPopUpButton per visualizzare la mia immagine alternativo quando viene cliccato?

È stato utile?

Soluzione

Uno sviluppatore dal forum di Apple Dev mi ha segnalato nella giusta direzione: https://devforums.apple. com / messaggio / 364824

Ecco cosa mi è venuta come una sottoclasse di NSPopUpButtonCell che rispetta l'immagine alternativa da IB:

- (void)drawImageWithFrame:(NSRect)cellRect inView:(NSView *)controlView{
    NSImage *image = self.image;
    if([self isHighlighted] && self.alternateImage){
        image = self.alternateImage;
    }

    //TODO: respect -(NSCellImagePosition)imagePosition
    NSRect imageRect = NSZeroRect;
    imageRect.origin.y = (CGFloat)round(cellRect.size.height*0.5f-image.size.height*0.5f);
    imageRect.origin.x = (CGFloat)round(cellRect.size.width*0.5f-image.size.width*0.5f);
    imageRect.size = image.size;

    [image drawInRect:imageRect
                 fromRect:NSZeroRect
                operation:NSCompositeSourceOver 
                 fraction:1.0f 
           respectFlipped:YES 
                    hints:nil];    
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top