【发布时间】:2012-04-23 04:51:46
【问题描述】:
我花了很多时间弄清楚如何确定我的 NSWindow 是否处于全屏模式,以及如何启用/禁用它进入或退出全屏模式。当我将一个视图动画化到另一个视图或做一些进入或退出全屏模式会搞砸的事情时,这很有用。有点像锁定一个窗口不被调整大小。
这个问题的答案贴在下面。
【问题讨论】:
标签: objective-c osx-lion fullscreen nswindow
我花了很多时间弄清楚如何确定我的 NSWindow 是否处于全屏模式,以及如何启用/禁用它进入或退出全屏模式。当我将一个视图动画化到另一个视图或做一些进入或退出全屏模式会搞砸的事情时,这很有用。有点像锁定一个窗口不被调整大小。
这个问题的答案贴在下面。
【问题讨论】:
标签: objective-c osx-lion fullscreen nswindow
对于这里感兴趣的任何人,您可以按原样分类或使用一些方法。我花了一些时间寻找如何做到这一点,并认为它可以帮助其他人:
这个会告诉你是否处于全屏模式:
@implementation MyWindow
- (void) setStyleMask:(NSUInteger)styleMask {
MyWindowController *wndController = (MyWindowController *)self.windowController;
wndController.fullScreenMode = (styleMask & NSFullScreenWindowMask);
[super setStyleMask:styleMask];
}
@end
我正在我的窗口控制器中设置一个属性。
为了完整起见,这里是 NSWindow 上的类别的样子:
@implementation NSWindow (CategoryNSWindow)
#pragma mark - Full Screen Mode:
- (BOOL) inFullScreenMode {
return (self.styleMask & NSFullScreenWindowMask);
}
@end
这两种方法将启用/禁用进入或退出全屏模式的能力:
- (void) enableFullScreen {
NSWindowCollectionBehavior behavior = [self.window collectionBehavior];
behavior |= NSWindowCollectionBehaviorFullScreenPrimary;
[self.window setCollectionBehavior:behavior];
}
- (void) disableFullScreen {
NSWindowCollectionBehavior behavior = [self.window collectionBehavior];
behavior ^= NSWindowCollectionBehaviorFullScreenPrimary;
[self.window setCollectionBehavior:behavior];
}
随意重命名方法。
【讨论】:
NSWindowDelegate有两个事件
DidWindowEnterFullScreen
DidWindowExitFullScreen
帮助您解决问题。
【讨论】:
NSWindowDelegate的两个事件是:
– windowDidEnterFullScreen:
– windowDidExitFullScreen:
【讨论】: