Erstellen Sie eine Unterklasse von NSImageView
und überschreiben mouseDownCanMoveWindow
Methode:
- (BOOL)mouseDownCanMoveWindow
{
return YES;
}
Frage
Ich erstelle ein Mini -Fenster wie das iTunes Mini -Fenster:
Es ist draggierbar und hat ein Hintergrundbild.
Dann habe ich a erstellt NSWindow
Subklasse 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
Lösung
Erstellen Sie eine Unterklasse von NSImageView
und überschreiben mouseDownCanMoveWindow
Methode:
- (BOOL)mouseDownCanMoveWindow
{
return YES;
}