Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 如何:NSWindow是否处于全屏模式(Lion)并启用/禁用?_Objective C_Osx Lion_Fullscreen_Nswindow - Fatal编程技术网

Objective c 如何:NSWindow是否处于全屏模式(Lion)并启用/禁用?

Objective c 如何:NSWindow是否处于全屏模式(Lion)并启用/禁用?,objective-c,osx-lion,fullscreen,nswindow,Objective C,Osx Lion,Fullscreen,Nswindow,我花了大量时间研究如何确定我的NSWindow是否处于全屏模式,以及如何启用/禁用它进入或退出全屏模式。当我将一个视图设置为另一个视图的动画,或者做一些进入或退出全屏模式会把事情搞砸的事情时,这很有用。有点像是锁定了一个不被调整大小的窗口 对此的答案发布在下面。对于任何感兴趣的人,这里有一些方法可以按原样分类或使用。我花了一些时间寻找如何做到这一点,并认为它可以帮助其他人: 这将告诉您是否处于全屏模式: @implementation MyWindow - (void) setStyleMas

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


对此的答案发布在下面。

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

这将告诉您是否处于全屏模式:

@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

    这有助于你解决问题


NSWindowDelegate的两个事件是:

– windowDidEnterFullScreen:
– windowDidExitFullScreen:

诚然,这些都像是通知,但我介绍的是一种实时的了解方式。也不确定你是否知道这一点,但如果你捕获windowWillEnterFullScreen,那么你还必须为willUseFullScreenContentSize实现另一个委托:如果你问我,这有点痛苦。