Какао - заставить работать простой NSImageView - PullRequest
1 голос
/ 09 января 2011

Я не понимаю, почему этот код не отображает изображения:

В делегате приложения:

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
    NSRect rect = window.frame;
    rect.origin.x = 0;
    rect.origin.y = 0;
    BlueImageView *blueImageView = [[BlueImageView alloc]initWithFrame:rect];
    window.contentView = blueImageView; // also tried [window.contentView addSubview: blueImageView];
}

BlueImageView.h:

@interface BlueImageView : NSImageView {
}
@end

BlueImageView.m:

@implementation BlueImageView

- (id)initWithFrame:(NSRect)frame {
    self = [super initWithFrame:frame];
    if (self) {
        [self setImage: [NSImage imageNamed:@"imagefile.png"]];
        NSAssert(self.image, @"");
        NSLog (@"Initialized");
    }
    return self;
}

- (void)drawRect:(NSRect)dirtyRect {
}

@end  

Файл imagefile.png существует.NSAssert не вызывает исключения.NSLog стреляет.Но в окне нет изображения.

1 Ответ

5 голосов
/ 09 января 2011

Метод drawRect: вызывается для рисования представления, и ваша реализация немедленно возвращается.Чтобы NSImageView нарисовал изображение для вас, вызовите [super drawRect:dirtyRect]; в вашей реализации drawRect :.Если вы не собираетесь делать какие-либо другие рисунки в drawRect: просто удалите метод, чтобы ускорить рисование.

...