Каков наилучший способ получить экземпляр NSScreen
, который скорее всего будет проектором или дисплеем AirPlay? (или даже TV-Out?) Я пишу презентационное программное обеспечение и должен знать, какой экран, который скорее всего представляет экран презентации.NSScreen получить экран проектора/ТВ-выход/AirPlay?
Некоторые варианты пришли на ум:
A. Используйте второй экземпляр, если есть какая-либо. Конечно, это, очевидно, не даст хороших результатов, если к ним подключено более двух экранов.
NSScreen* projectorScreen = [NSScreen mainScreen];
NSArray* screens = [NSScreen screens];
if(screens.count > 1) {
projectorScreen = screens[1];
}
B. Используйте первый экран, если это не главный экран. Причина этого в том, что в случаях зеркалирования первый экран должен быть тем, у которого самая высокая глубина пикселей.
NSScreen* projectorScreen = [NSScreen mainScreen];
NSArray* screens = [NSScreen screens];
if(screens.count > 1) {
if(screens[0] != projectorScreen) {
projectorScreen = screens[0];
}
}
C. Используйте низкий экран, который является не главный экран. Причина в том, чтобы выбрать любой экран, который не главный экран.
NSScreen* projectorScreen = [NSScreen mainScreen];
NSArray* screens = [NSScreen screens];
if(screens.count > 1) {
for(NSScreen* screen in screens) {
if(screen != projectorScreen) {
projectorScreen = screen;
break;
}
}
}
D. Использование NSScreen
«s deviceDescription
словарь и найти самый большой экран в реальном мире координат. Это разделит ширину и высоту NSDeviceSize
на NSDeviceResolution
, и теоретически это должно дать площадь в квадратных дюймах. Однако я не совсем уверен, что ОС знает реальный размер каждого экрана.
Любые другие предложения?
Предоставлено не существует 100% правильной эвристики, но опять же, выбор правильного экрана в течение большей части времени должен быть достаточным.
E. Всплывающее меню. –
Всплывающее меню может отображать проекционный экран? – adib
Чтобы уточнить: ваш пятый выбор состоит в том, чтобы иметь всплывающее меню, в котором вы перечисляете все экраны, и позволяете пользователю выбирать любой экран, который они хотят представить. (Не опубликовано как ответ, потому что ваш вопрос по-прежнему действителен для выбора значения по умолчанию.) –