用NSImage作为句柄拖动窗口?

时间:2012-01-22 06:23:21

标签: xcode macos window handle

我正在编写一个mac应用程序并使用此代码隐藏窗口句柄

[self.window setStyleMask:NSBorderlessWindowMask];

嗯,这很好,但是我仍然需要一个手柄来移动窗口,那么有没有办法从另一个对象(如NSImage)移动窗口,就像窗口句柄一样?

我的图片代码位于.h,

@interface WOWAppDelegate : NSObject <NSApplicationDelegate> {
        NSWindow *window;
    IBOutlet NSImageView* winView;

}

并在.m文件中

- (void)awakeFromNib {

    NSString *inFilePathwin = [[[NSBundle mainBundle] resourcePath]  stringByAppendingPathComponent:@"win.png"];
    NSImage *winImage = [[[NSImage alloc] initWithContentsOfFile:inFilePathwin] autorelease];
    [winView setImage:winImage];

} 

因此图像正常工作并显示如何链接该功能?

1 个答案:

答案 0 :(得分:4)

在NSView子视图上挂钩mouseDragged事件。

-(void)mouseDragged:(NSEvent *)theEvent
{       
CGFloat deltax = [theEvent deltaX];
CGFloat deltay = [theEvent deltaY];

NSRect frame = [[self window] frame];
frame.origin.x += deltax;
frame.origin.y -= deltay;

[[self window] setFrameOrigin:frame.origin];    
}

所以

  1. 将NSView子类化为XView
  2. 将您的句柄图像放在此视图容器的实例中。
  3. 将容器放在窗口主视图中所需的位置。
  4. 在XView中使用此片段拖动窗口。
  5. 使用mouseDown和MouseUp事件调整行为。