Отображать окно os x во весь экран на дополнительном мониторе с помощью Cocoa
-
03-07-2019 - |
Вопрос
Я работаю над приложением Cocoa для Mac, где мне нужно отобразить окно / вид на дополнительном мониторе в полноэкранном режиме.Я знаю, как создать окно, которое можно перетащить на дополнительный монитор, но я хотел программно создать окно и сделать его полноэкранным на внешнем мониторе.Спасибо за помощь.
Решение
Сначала определите, какой экран вы хотите использовать, выполнив итерацию по [NSScreen screens].
Создайте полноэкранное окно с помощью:
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) }];
}];
}
}
Вы можете подключить это к пункту полноэкранного меню в меню Window (после вставки его в свой nib), но не забудьте изменить действие, выполняемое пунктом меню, на ваш toggleMyViewFullScreen:.Или вы можете вызвать toggleMyViewFullScreen программно или при загрузке вашего приложения.