【问题标题】:HOWTO: Is NSWindow In FullScreen Mode (Lion) AND Enabling/Disabling?HOWTO:NSWindow 是否处于全屏模式(Lion)并启用/禁用?
【发布时间】:2012-04-23 04:51:46
【问题描述】:

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

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

【问题讨论】:

    标签: objective-c osx-lion fullscreen nswindow


    【解决方案1】:

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

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

    @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];
    }
    

    随意重命名方法。

    【讨论】:

      【解决方案2】:

      NSWindowDelegate有两个事件

      • DidWindowEnterFullScreen
      • DidWindowExitFullScreen

        帮助您解决问题。

      【讨论】:

      • 没错,这些就像通知,但我展示的是一种实时的了解方式。也不确定你是否知道这一点,但如果你捕获 windowWillEnterFullScreen 那么你还必须为 willUseFullScreenContentSize 实现另一个委托:如果你问我,这有点痛苦。
      【解决方案3】:

      NSWindowDelegate的两个事件是:

      – windowDidEnterFullScreen:
      – windowDidExitFullScreen:
      

      【讨论】:

        猜你喜欢
        • 2018-01-28
        • 2010-11-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-22
        • 1970-01-01
        • 2021-04-06
        相关资源
        最近更新 更多