CGDisplayCopyAllDisplayModes оставляет один допустимый режим

При программной работе с режимами отображения в OS X (документацияЯ обнаружил, чтоCGDisplayCopyAllDisplayModes опускает самый правый вариант, который представлен в Системных настройках.

A простая утилита который печатает размер текущего режима отображения, и все доступные размеры режима отображения выводят это

current size: 1920x1200
available sizes:
2880x1800
1440x900
2560x1600
2048x1280
1024x768
800x600
640x480
1680x1050
1280x800

1920x1200 является допустимым вариантом

Все остальные параметры, которые дает Системные настройки, представлены в списке. Кто-нибудь знает, почему1920x1200 не может быть включен? Я попытался изменить одно из предопределенных значений в системных настройках, но это не вызвало1920x1200 быть включенным.

Изменить (принятый ответ намного лучше, чем эти махинации, но я оставляю эту информацию на всякий случай)

«Масштабированные» режимы отображения можно найти, ссылаясь на частный API.

Вы можете создать заголовочный файл, который сделает приватные методы доступными: см.этот смысл что я позаимствовал уэтот проект.

Затем вы можете увидеть все режимы, в том числе масштабированные, как это

print("Private modes:\n")

var numDisplayModes: Int32 = 0
CGSGetNumberOfDisplayModes(mainDisplayID, &numDisplayModes)
print("Num modes \(numDisplayModes)")

for i in 0...(numDisplayModes-1) {
    var pmode: CGPrivDisplayMode = CGPrivDisplayMode()
    CGSGetDisplayModeDescriptionOfLength(mainDisplayID, CInt(i), &pmode, CInt(sizeof(CGPrivDisplayMode)))

    print("\t\(pmode.modeNumber): \(pmode.width)x\(pmode.height) -- \(pmode.density)  \n")
}

Ответы на вопрос(1)

Ваш ответ на вопрос