NSPopUpButton Active Image
-
09-10-2019 - |
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?
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];
}