2012-06-01 2 views

ответ

1

Я действительно не думаю, что есть «простой» способ сделать это. Если вы посмотрите на описание API, оно даже заявляет, что оно не отвечает на процедуру setImage. Я сделал довольно много работы над объектами кнопок для подклассификации и т. Д. ... и я думаю, что именно здесь вам придется идти, чтобы делать то, что вы просите.

0

Как и многие из этих элементов управления, я сделал это путем подклассификации NSPopupButton (Cell), а затем выполнил все мои собственные чертежи в drawRect ... Я немного обманул, и использовал изображение вместо фактического треугольника, вместо того, чтобы пытаться делайте это через примитивы.

- (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

Я сделал это, и это сработало для меня.

(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. 
} 
Смежные вопросы