Frage

Ich erstelle ein Mini -Fenster wie das iTunes Mini -Fenster:

enter image description here

Es ist draggierbar und hat ein Hintergrundbild.

Dann habe ich a erstellt NSWindowSubklasse und außer Kraft gesetzt initWithContentRect:styleMask:backing:defer: Methode und fügte eine hinzu NSImageView dazu:

- (id)initWithContentRect:(NSRect)contentRect styleMask:(NSUInteger)aStyle backing:(NSBackingStoreType)bufferingType defer:(BOOL)flag
{
    contentRect.size = CGSizeMake(287, 287);
    self = [super initWithContentRect:contentRect styleMask:aStyle backing:bufferingType defer:flag];
    if (self)
    {
        [self setMovableByWindowBackground:YES];
        [self setOpaque:NO];
        [self setBackgroundColor:[NSColor colorWithCalibratedWhite:1.0 alpha:0.5]];

        NSImageView *imageView = [[NSImageView alloc] initWithFrame:(CGRect){CGPointZero, contentRect.size}];
        imageView.image = [NSImage imageNamed:@"MiniWindow.png"];
        [self.contentView addSubview:imageView];
    }
    return self;
}

Aber nachdem ich das hinzugefügt habe NSImageView In der ContentView von Windows wird das Fenster nicht ausgerichtet.

Wie wird das Fenster wieder draggierbar?

Mit freundlichen Grüßen

War es hilfreich?

Lösung

Erstellen Sie eine Unterklasse von NSImageView und überschreiben mouseDownCanMoveWindow Methode:

- (BOOL)mouseDownCanMoveWindow
{
    return YES;
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top