Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 单击红色关闭按钮时,如何以及在何处更改关闭NSPanel的动画?_Objective C_Animated_Nspanel - Fatal编程技术网

Objective c 单击红色关闭按钮时,如何以及在何处更改关闭NSPanel的动画?

Objective c 单击红色关闭按钮时,如何以及在何处更改关闭NSPanel的动画?,objective-c,animated,nspanel,Objective C,Animated,Nspanel,我在NSWindowController中提供了一个NSPanel。当我按下NSPanel标题栏的红色小按钮时,我想用不同的动画改变它消失的方式。我该怎么做?是否有类似-(void)CloseButton Pressed的东西我可以更改。因为NSV窗口的-(void)关闭没有按我所希望的那样工作。当我展示它时,我是这样做的: [self.imagePanelController.previewPanel setFrame:NSRectFromCGRect(CGRectMake(self.wind

我在NSWindowController中提供了一个NSPanel。当我按下NSPanel标题栏的红色小按钮时,我想用不同的动画改变它消失的方式。我该怎么做?是否有类似-(void)CloseButton Pressed的东西我可以更改。因为NSV窗口的-(void)关闭没有按我所希望的那样工作。当我展示它时,我是这样做的:

[self.imagePanelController.previewPanel setFrame:NSRectFromCGRect(CGRectMake(self.window.frame.origin.x + self.window.frame.size.width/4 , self.window.frame.origin.y + self.bounds.size.height/4, self.ciImage.extent.size.width, self.ciImage.extent.size.height)) display:YES animate:YES];

我想设置一个新的帧再次和动画,当按下面板关闭按钮。有什么想法吗?

所以我自己就想出来了,它对我来说很有效,我不知道这是否是最好的解决方案,但它正是我所需要的。如果有人在寻找类似的东西,我就发这个

我正在获取NSPanel的close(关闭)按钮,并在其上执行一个操作,以完全按照打开面板的动画方式关闭面板

NSButton *closeButton = [self.imagePanelController.previewPanel standardWindowButton:NSWindowCloseButton];
    [closeButton setTarget:self];
    [closeButton setAction:@selector(closePanel)];

- (void)closePanel
{

    int calcX = self.window.frame.size.width - self.bounds.size.width;
    int x = self.window.frame.origin.x + calcX;
    int y = self.window.frame.origin.y;
    int width = self.bounds.size.width;
    int height = self.bounds.size.height;

    [self.imagePanelController.previewPanel setFrame:NSRectFromCGRect(CGRectMake(x, y, width, height)) display:YES animate:YES];
    [self.imagePanelController.previewPanel close];

}

除了将对象渲染到一个层并设置动画外,Windows还有一个新的功能。