2012-06-01 38 views

Trả lời

1

Tôi thực sự không nghĩ rằng có một cách "dễ dàng" để thực hiện việc này. Nếu bạn nhìn vào mô tả API, nó thậm chí còn nói rằng nó không đáp ứng với thói quen setImage. Tôi đã thực hiện khá nhiều công việc của các đối tượng nút phân lớp, vv ... và tôi nghĩ đây là nơi bạn sẽ phải đi để làm những gì bạn đang yêu cầu.

0

Giống như quá nhiều trong số các điều khiển này, tôi đã làm nó bằng cách phân lớp NSPopupButton (Cell) và sau đó làm tất cả bản vẽ của riêng tôi trong drawRect ... Tôi đã lừa một chút và sử dụng hình ảnh làm tam giác thực tế thay vì cố gắng làm điều đó thông qua nguyên thủy.

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

tôi đã làm điều này và nó làm việc cho tôi.

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