Macos CGDisplayCopyAllDisplayModes省略了一个有效模式

Macos CGDisplayCopyAllDisplayModes省略了一个有效模式,macos,swift,core-graphics,Macos,Swift,Core Graphics,在OSX()中以编程方式使用显示模式时,我发现CGDisplayCopyAllDisplayModes忽略了系统首选项中最右边的选项 打印当前显示模式大小和所有可用显示模式大小的输出 current size: 1920x1200 available sizes: 2880x1800 1440x900 2560x1600 2048x1280 1024x768 800x600 640x480 1680x1050 1280x800 1920x1200是一个有效选项 系统首选项提供的所有其他选项都显

在OSX()中以编程方式使用显示模式时,我发现
CGDisplayCopyAllDisplayModes
忽略了系统首选项中最右边的选项

打印当前显示模式大小和所有可用显示模式大小的输出

current size: 1920x1200
available sizes:
2880x1800
1440x900
2560x1600
2048x1280
1024x768
800x600
640x480
1680x1050
1280x800
1920x1200
是一个有效选项

系统首选项提供的所有其他选项都显示在列表中。有人知道为什么不能包括
1920x1200
?我已尝试更改为system prefs中的另一个预定义值,但这并没有导致包含
1920x1200

编辑(被接受的答案比这些恶作剧好得多,但我留下这些信息以防万一) “缩放”显示模式可通过参考专用API找到

您可以创建一个使私有方法可用的头文件:请参阅我从中借用的

然后你可以看到所有的模式,包括像这样的缩放模式

打印(“专用模式:\n”)
变量numDisplayModes:Int32=0
CGSGetNumberOfDisplayModes(mainDisplayID和numDisplayModes)
打印(“Num模式\(numDisplayModes)”)
对于0中的i…(numDisplayModes-1){
var pmode:CGPrivDisplayMode=CGPrivDisplayMode()
CGSGetDisplayModeDescriptionOfflength(主显示ID、CInt(i)和pmode、CInt(sizeof(CGPrivDisplayMode)))
打印(“\t\(pmode.modeNumber):\(pmode.width)x\(pmode.height)--\(pmode.density)\n”)
}

有一个只记录在标题中的公共API
CGDisplayCopyAllDisplayModes()
接受一个
options
参数,该参数是一个字典。文档(甚至标题)说它未使用,您必须传递
NULL
,但您可以传递一个字典,该字典的键为
kCGDisplayShowDuplicateLowResolutionModes
和值为
kCFBooleanTrue

选项名称不是很清楚。它包括一系列额外的模式


此外,您可能需要使用
CGDisplayModeGetPixelWidth()
CGDisplayModeGetPixelHeight()
来区分备份存储的点大小和像素大小。(
CGDisplayModeGetWidth()
CGDisplayModeGetHeight()
返回点大小。通过比较这些值,可以确定模式是否缩放。)

我通过了
kcgdisplaymeshowDuplicateLowResolutionModes
,但分辨率仍然很低。如果我使用这个api,苹果会批准吗?