macos - NSWindow 恢复框架位置

标签 macos nswindow nswindowcontroller

在 OS X 上是否可以通过编程方式访问缩放或最大化窗口的恢复窗口位置。

即:在大多数 OS X 应用程序中,您可以双击标题栏来缩放它。如果您再次双击它,它会恢复到之前的位置。

我希望能够获取和设置保存的位置矩形。

最佳答案

您可以创建自定义 NSWindowDelegate 以在 NSWindow 框架最大化之前保存它:

@interface MyWindowDelegate : NSObject {
@private
  NSRect m_maximizedFrame;
  NSRect m_restoredFrame;
}

- (NSRect)windowWillUseStandardFrame:(NSWindow*)window
                        defaultFrame:(NSRect)newFrame
{
  // Save the expected frame when the window is maximized
  m_maximizedFrame = newFrame;
  return newFrame;
}

- (BOOL)windowShouldZoom:(NSWindow*)window
                 toFrame:(NSRect)newFrame
{
  // The NSWindow is going to be maximized...
  if (NSEqualRects(newFrame, m_maximizedFrame)) {
    // Save the frame before it's maximized
    m_restoredFrame = [window frame];
  }
  return YES;
}
@end

m_restoredFrame 只有在之后窗口未调整大小时才有效(即 [window isZoomed] 必须为真)。我不确定是否有更好的方法。

关于macos - NSWindow 恢复框架位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37473172/

相关文章:

swift - windowWillClose 和按钮操作未调用 Swift

macos - 在 OSX 中以最大化形式初始化 NSwindowcontroller

cocoa - 如何在 NSTableView 中设置 NSButtoncell 类型的单元格的背景颜色?

swift - 移至回收站时的 URL 书签数据

xcode - “initial position” 在 Xcode 的 nib 编辑器中起什么作用?

cocoa - 弧: How do you release a WindowController when the user closes the Window?

macos - Mercurial OS X 扩展启用

python - 无法通过 Mac High Sierra 上的 gi.repository 在 python 中导入 WebKit

macos - 如何防止 Storyboard 打开窗口

objective-c - NSWindow 不响应击键命令 -s