Отображение полноэкранного окна OS X на дополнительном мониторе с использованием какао
Я работаю над приложением Cocoa Mac, где мне нужно отобразить окно / представление на дополнительном мониторе в полноэкранном режиме. Я знаю, как создать окно, которое можно перетащить на дополнительный монитор, но я хотел программно создать окно и сделать его полноэкранным на внешнем мониторе. Спасибо за помощь.
3 ответа
Сначала определите, какой экран вы хотите использовать, перебирая [NSScreen экранов].
Создайте полноэкранное окно с:
NSScreen *screen = /* from [NSScreen screens] */
NSRect screenRect = [screen frame];
NSWindow *window = [[NSWindow alloc] initWithContentRect:screenRect
styleMask:NSBorderlessWindowMask
backing:NSBackingStoreBuffered
defer:NO
screen:screen];
[window setLevel: CGShieldingWindowLevel()];
Вы также можете использовать Google CGDisplayCapture().
Вы можете позвонить enterFullScreenMode:withOptions:
метод NSView
достичь желаемого поведения.
Смотрите документацию Apple.
Прочитайте здесь и здесь для вариантов, которые могут быть предоставлены для этого метода.
Ты можешь использовать [NSScreen screens]
чтобы получить список доступных экранов. Смотрите здесь для деталей.
Полноэкранные анимации в окнах изменчивы и, на мой взгляд, выглядят не очень хорошо. В полноэкранном режиме намного плавнее.
Попробуй это:
- (void)toggleMyViewFullScreen:(id)sender
{
if (myView.inFullScreenMode) {
[myView exitFullScreenModeWithOptions:nil];
} else {
NSApplicationPresentationOptions options =
NSApplicationPresentationHideDock |
NSApplicationPresentationHideMenuBar;
[myView enterFullScreenMode:[NSScreen mainScreen] withOptions:@{
NSFullScreenModeApplicationPresentationOptions : @(options) }];
}];
}
}
Вы можете подключить его к полноэкранному пункту меню в меню "Окно" (после вставки его в перо), но не забудьте изменить действие, которое вызывает этот пункт меню, на свой toggleMyViewFullScreen: . Или вы можете вызвать toggleMyViewFullScreen программно или при загрузке приложения.