objective-c - 如何 : Is NSWindow In FullScreen Mode (Lion) AND Enabling/Disabling?

标签 objective-c osx-lion fullscreen nswindow

我花了很多时间弄清楚如何确定我的 NSWindow 是否处于全屏模式,以及如何启用/禁用它进入或退出全屏模式。当我将一个 View 动画化为另一个 View 或者做一些进入或退出全屏模式会搞砸的事情时,这很有用。有点像锁定窗口以防止其调整大小。

这个问题的答案贴在下面。

最佳答案

对于此处感兴趣的任何人,您可以对一些方法进行分类或按原样使用。我花了一些时间寻找如何做到这一点,并认为它可以帮助其他人:

这个会告诉你是否处于全屏模式:

@implementation MyWindow

- (void) setStyleMask:(NSUInteger)styleMask {

    MyWindowController *wndController = (MyWindowController *)self.windowController;
    wndController.fullScreenMode = (styleMask & NSFullScreenWindowMask);
    [super setStyleMask:styleMask];
}

@end

我正在我的窗口 Controller 中设置一个属性。

为完整起见,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];
}

根据需要重命名方法。

关于objective-c - 如何 : Is NSWindow In FullScreen Mode (Lion) AND Enabling/Disabling?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10096529/

相关文章:

ios - 在 Swift 中为 UIPickerView 委托(delegate)方法

iOS 7 : UITabBarItem badge z-index

ios - 停止 "developer tools access needs to take control of another process for debugging to continue"警报

javascript - 如何使用Javascript使窗口全屏(在屏幕上拉伸(stretch))

iphone - 在 CGContext 中绘制 PDF 右上角

cocoa - 从 OSX lion 上的版本浏览器恢复不起作用...有什么想法吗?

iphone - 为 iOS 4 构建 PJSIP

java - 三星 Galaxy S8 全屏模式

java - 除了在Java中获取屏幕尺寸之外,还可以使用其他方式设置全屏

objective-c - 如何知道 NSString 是否适合 UILabel 以及最后一个适合的字符串的索引?