Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 如何在mac OSX Swift上获得所有受支持的屏幕分辨率_Objective C_Swift_Macos - Fatal编程技术网

Objective c 如何在mac OSX Swift上获得所有受支持的屏幕分辨率

Objective c 如何在mac OSX Swift上获得所有受支持的屏幕分辨率,objective-c,swift,macos,Objective C,Swift,Macos,我想要一个 1) 获取我当前的屏幕分辨率(已解决) 例如:要获取当前屏幕显示代码,请执行以下操作: 系统|探查器SPDisplaysDataType| grep分辨率 2) 获取所有支持的分辨率,如下图所示(未解决) 或者任何目标C代码也会有用 Swift代码 var displayConfig: CGDisplayConfigRef = nil let mainDisplayID = CGMainDisplayID() var displayMode = CGDisp

我想要一个

1) 获取我当前的屏幕分辨率(已解决)

例如:要获取当前屏幕显示代码,请执行以下操作:

系统|探查器SPDisplaysDataType| grep分辨率

2) 获取所有支持的分辨率,如下图所示(未解决)

或者任何目标C代码也会有用

Swift代码

    var displayConfig: CGDisplayConfigRef = nil
    let mainDisplayID = CGMainDisplayID()

    var displayMode = CGDisplayCopyDisplayMode(mainDisplayID).takeRetainedValue()
    var width = CGDisplayModeGetWidth(displayMode)
    var height = CGDisplayModeGetHeight(displayMode)

    print("current size: \(width)x\(height)\n")
    print("available sizes:\n")

    var modes = CGDisplayCopyAllDisplayModes(mainDisplayID, nil).takeRetainedValue()
    let modesCount = CFArrayGetCount(modes) - 1

    for i in 0...modesCount {
        var mode: CGDisplayModeRef = unsafeBitCast(CFArrayGetValueAtIndex(modes, i), CGDisplayModeRef.self)

        var width = CGDisplayModeGetWidth(mode)
        var height = CGDisplayModeGetHeight(mode)
        print("\t\(width)x\(height)\n")

Xcode 11•Swift 5.1

extension CGDirectDisplayID  {
    var displayMode: CGDisplayMode? { CGDisplayCopyDisplayMode(self) }
    func allDisplayModes(options: CFDictionary? = nil) -> [CGDisplayMode] { CGDisplayCopyAllDisplayModes(self, options) as? [CGDisplayMode] ?? [] }
}


用法:

if let resolution = Display.mode?.resolution {
    print("Resolution:", resolution)
}
for mode in Display.allModes() {
    print(mode.resolution)
}

描述您的需求和要求他人为您编写代码、解释如何编写代码或提供示例或参考的问题都是离题的。请确定有关编程的特定问题。包括尝试的解决方案,解释结果与期望结果的差异,以及您收到的任何错误消息的全文。请阅读以下关于提出好问题的建议:[],]。要获得当前屏幕分辨率,代码为-------------------system_profiler SPDisplaysDataType | grep resolution请编辑您的问题,不要在评论中发布代码。感谢您帮助我提出更多问题clearer@LeoNatan“你想要代码?对你有好处。这是一个糟糕的问题。-利奥·纳坦5小时前”他问了这个问题,一年多前已经回答了自己的问题。
struct Display {
    static var main: CGDirectDisplayID { CGMainDisplayID() }
    static var mode: CGDisplayMode? { main.displayMode }
    static func allModes(for directDisplayID: CGDirectDisplayID = main) -> [CGDisplayMode] { directDisplayID.allDisplayModes() }
}
if let resolution = Display.mode?.resolution {
    print("Resolution:", resolution)
}
for mode in Display.allModes() {
    print(mode.resolution)
}