Отобразить полный экран окна os x на дополнительном мониторе с помощью Cocoa
Я работаю над приложением Cocoa Mac, где мне нужно отобразить окно/просмотр на дополнительном мониторе на весь экран. Я знаю, как создать окно, которое можно перетащить на дополнительный монитор, но я хотел программно создать окно и сделать его полноэкранным на внешнем мониторе. Спасибо за помощь.
Ответы
Ответ 1
Сначала определите, какой экран вы хотите использовать, итерации по экранам [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()];
Возможно, вы захотите также использовать CGDisplayCapture().
Ответ 2
Вы можете вызвать метод enterFullScreenMode:withOptions:
NSView
, чтобы добиться желаемого поведения.
См. Документация Apple.
Прочитайте здесь и здесь для параметров которые могут быть предоставлены этому методу.
Вы можете использовать [NSScreen screens]
, чтобы получить список доступных экранов. Подробнее см. здесь.
Ответ 3
Полноэкранные анимации на экране нестабильны и, на мой взгляд, выглядят не очень хорошо. Полноэкранный вид гораздо более плавный.
Попробуйте следующее:
- (void)toggleMyViewFullScreen:(id)sender
{
if (myView.inFullScreenMode) {
[myView exitFullScreenModeWithOptions:nil];
} else {
NSApplicationPresentationOptions options =
NSApplicationPresentationHideDock |
NSApplicationPresentationHideMenuBar;
[myView enterFullScreenMode:[NSScreen mainScreen] withOptions:@{
NSFullScreenModeApplicationPresentationOptions : @(options) }];
}];
}
}
Вы можете подключить его к пункту полноэкранного меню в меню "Окно" (после вставки его в свой нить), но обязательно измените действие, которое элемент меню запускает на ваш toggleMyViewFullScreen:. Или вы можете запрограммировать toggleMyViewFullScreen программно или когда ваше приложение загружается.