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")
}