2011-01-10 41 views
9

Tôi muốn tạo một NSPopUpButton với một hình ảnh hoạt động tùy chỉnh. Tôi có hai hình ảnh, một hình ảnh không hoạt động và một hình ảnh khác để hoạt động. Trong trình tạo giao diện, tôi đặt Hình ảnh và Alt. Hình ảnh cho NSPopUpButton. Hình ảnh hiển thị chính xác nhưng khi tôi nhấp vào nút, nó hiển thị trạng thái nút tối chuẩn thay vì Alt. Hình ảnh.NSPopUpButton Hình ảnh hoạt động

Đây là một ảnh chụp màn hình của bảng điều khiển giao diện người xây dựng: http://cl.ly/0D2c0Y2y0f1Z462d311X

Làm thế nào tôi có thể thiết lập các NSPopUpButton để hiển thị hình ảnh thay thế của tôi khi được nhấp vào?

+1

Lưu ý rằng 'respectFlipped' nên là' YES' –

+0

Cảm ơn bạn đã tip :) – keegan3d

Trả lời

4

Một nhà phát triển từ các diễn đàn của Apple Dev chỉ cho tôi đi đúng hướng: https://devforums.apple.com/message/364824

Đây là những gì tôi đã đưa ra như một lớp con của NSPopUpButtonCell tôn trọng hình ảnh thay thế từ 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];  
} 
+0

Chỉ cần thêm vào điều này, có thể vì 'NSPopUpButton' lấy tên/hình ảnh từ mục menu đầu tiên, không thể có hình ảnh thay thế. –

Các vấn đề liên quan