Frage

Ich bin verwirrt darüber, warum ist dieser Code kein Bild angezeigt werden:

In der AppDelegate:

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

Die Datei imageFile.png existiert. Die NSAssert verursacht keine Ausnahme. Die NSLog feuert. Aber kein Bild zeigt im Fenster.

War es hilfreich?

Lösung

Die drawRect: Methode wird aufgerufen, um die Ansicht zu ziehen, und Ihre Implementierung sofort zurückkehrt. Um NSImageView das Bild zu zeichnen für Sie, rufen Sie [super drawRect:dirtyRect]; in Ihrer Implementierung von drawRect :. Wenn Sie keine andere Zeichnung in drawRect tun werden :, nur die Methode entfernen beschleunigen zu ziehen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top