在 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/