Macos CGDisplayCopyAllDisplayModes省略了一个有效模式
在OSX()中以编程方式使用显示模式时,我发现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是一个有效选项 系统首选项提供的所有其他选项都显
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”)
}
有一个只记录在标题中的公共APICGDisplayCopyAllDisplayModes()
接受一个options
参数,该参数是一个字典。文档(甚至标题)说它未使用,您必须传递NULL
,但您可以传递一个字典,该字典的键为kCGDisplayShowDuplicateLowResolutionModes
和值为kCFBooleanTrue
选项名称不是很清楚。它包括一系列额外的模式
此外,您可能需要使用
CGDisplayModeGetPixelWidth()
和CGDisplayModeGetPixelHeight()
来区分备份存储的点大小和像素大小。(CGDisplayModeGetWidth()
和CGDisplayModeGetHeight()
返回点大小。通过比较这些值,可以确定模式是否缩放。)我通过了kcgdisplaymeshowDuplicateLowResolutionModes
,但分辨率仍然很低。如果我使用这个api,苹果会批准吗?