开发者

Cocoa -- getting a simple NSImageView to work

开发者 https://www.devze.com 2023-02-03 11:29 出处:网络
I am confused about why this code does not display any image: In the app delegate: - (void)applicationDidFinishLaunching:(NSNotification *)aNotification {

I am confused about why this code does not display any image:

In the app delegate:

- (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; 开发者_JAVA百科// 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  

The file imagefile.png exists. The NSAssert is not causing an exception. The NSLog is firing. But no image shows up in the window.


The drawRect: method is called to draw the view, and your implementation immediately returns. To get NSImageView to draw the image for you, call [super drawRect:dirtyRect]; in your implementation of drawRect:. If you aren't going to do any other drawing in drawRect:, just remove the method to speed up drawing.

0

精彩评论

暂无评论...
验证码 换一张
取 消