2012-06-01 7 views

risposta

1

Non penso davvero che ci sia un modo "facile" per farlo. Se si guarda la descrizione dell'API, si afferma addirittura che non risponde alla routine setImage. Ho fatto un po 'di lavoro con gli oggetti dei pulsanti sottoclasse, ecc ... e penso che questo sia il posto in cui dovresti andare per fare quello che stai chiedendo.

0

Come troppi di questi controlli, l'ho fatto sottoclasse NSPopupButton (Cella) e poi facendo tutto il mio disegno in drawRect ... Ho ingannato un po 'però, e ho usato un'immagine per fare il triangolo reale piuttosto che provare a fallo attraverso i primitivi.

- (void)drawRect:(NSRect)dirtyRect 
{ 
    //...Insert button draw code here... 
    //Admittedly the above statement includes more work than we probably want to do. 
    //Assumes triangleIcon is a cached NSImage...I also make assumptions about location 

    CGFloat iconSize = 6.0; 
    CGFloat iconYLoc = (dirtyRect.size.height - iconSize)/2.0; 
    CGFloat iconXLoc = (dirtyRect.size.width - (iconSize + 8)); 

    CGRect triRect = {iconXLoc, iconYLoc, iconSize, iconSize}; 
    [triangleIcon drawInRect:triRect]; 
} 
0

ho fatto questo e ha funzionato per me.

(void)drawImageWithFrame:(NSRect)cellFrame inView:(NSView *)controlView 
{ 
    NSPopUpButton *temp = (NSPopUpButton*)controlView; 

    NSString *strtile = temp.title; 

    AppDelegate *appdel = (AppDelegate*)[NSApplication sharedApplication].delegate; 
    NSFont *font = [NSFont systemFontOfSize:13.5]; 
    NSSize size = NSMakeSize(40, 10);// string size 

    CGRect rect = controlView.frame; 
    rect = CGRectMake((size.width + temp.frame.size.width)/2, rect.origin.y, 8, 17); 

    [self drawImage:[NSImage imageNamed:@"icon_downArrow_white.png"] withFrame:rect inView:self. 
} 
Problemi correlati