1

このコードが画像を表示しない理由について私は混乱しています:

アプリデリゲート:

- (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が起動しています。ただし、ウィンドウに画像は表示されません。

4

1 に答える 1

5

drawRect:メソッドが呼び出されてビューが描画され、実装はすぐに戻ります。NSImageViewに画像を描画させる[super drawRect:dirtyRect];には、drawRect:の実装を呼び出します。drawRect:で他の描画を行わない場合は、メソッドを削除するだけで描画を高速化できます。

于 2011-01-09T02:42:03.257 に答える