0

我在 NSWindowController 中展示了一个 NSPanel。当我按下 NSPanel 标题栏的红色小按钮时,我想用不同的动画改变它消失的方式。我怎么做?有没有类似 -(void)closeButtonPressed 的东西我可以改变。因为 NSWindow 的 -(void)close 没有像我想要的那样工作。当我展示它时,我会这样做:

[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];

当按下面板关闭按钮时,我想再次设置一个新框架并为其设置动画。有任何想法吗?

4

1 回答 1

0

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

我正在获取 NSPanel 的 closeButton 并对其执行操作以完全按照动画打开面板的方式关闭面板。

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];

}
于 2014-02-10T13:50:39.573 回答