Objective c 如何:NSWindow是否处于全屏模式(Lion)并启用/禁用?
我花了大量时间研究如何确定我的NSWindow是否处于全屏模式,以及如何启用/禁用它进入或退出全屏模式。当我将一个视图设置为另一个视图的动画,或者做一些进入或退出全屏模式会把事情搞砸的事情时,这很有用。有点像是锁定了一个不被调整大小的窗口Objective c 如何:NSWindow是否处于全屏模式(Lion)并启用/禁用?,objective-c,osx-lion,fullscreen,nswindow,Objective C,Osx Lion,Fullscreen,Nswindow,我花了大量时间研究如何确定我的NSWindow是否处于全屏模式,以及如何启用/禁用它进入或退出全屏模式。当我将一个视图设置为另一个视图的动画,或者做一些进入或退出全屏模式会把事情搞砸的事情时,这很有用。有点像是锁定了一个不被调整大小的窗口 对此的答案发布在下面。对于任何感兴趣的人,这里有一些方法可以按原样分类或使用。我花了一些时间寻找如何做到这一点,并认为它可以帮助其他人: 这将告诉您是否处于全屏模式: @implementation MyWindow - (void) setStyleMas
对此的答案发布在下面。对于任何感兴趣的人,这里有一些方法可以按原样分类或使用。我花了一些时间寻找如何做到这一点,并认为它可以帮助其他人: 这将告诉您是否处于全屏模式:
@implementation MyWindow
- (void) setStyleMask:(NSUInteger)styleMask {
MyWindowController *wndController = (MyWindowController *)self.windowController;
wndController.fullScreenMode = (styleMask & NSFullScreenWindowMask);
[super setStyleMask:styleMask];
}
@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];
}
我正在窗口控制器中设置属性
为完整起见,NSWindow上的类别如下所示:
@implementation NSWindow (CategoryNSWindow)
#pragma mark - Full Screen Mode:
- (BOOL) inFullScreenMode {
return (self.styleMask & NSFullScreenWindowMask);
}
@end
这两种方法将启用/禁用进入或退出全屏模式的功能:
@implementation MyWindow
- (void) setStyleMask:(NSUInteger)styleMask {
MyWindowController *wndController = (MyWindowController *)self.windowController;
wndController.fullScreenMode = (styleMask & NSFullScreenWindowMask);
[super setStyleMask:styleMask];
}
@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
– windowDidEnterFullScreen:
– windowDidExitFullScreen:
诚然,这些都像是通知,但我介绍的是一种实时的了解方式。也不确定你是否知道这一点,但如果你捕获windowWillEnterFullScreen,那么你还必须为willUseFullScreenContentSize实现另一个委托:如果你问我,这有点痛苦。