确定Objective-C(NSScreen)中的屏幕位置

确定Objective-C(NSScreen)中的屏幕位置,objective-c,position,Objective C,Position,使用[NSScreen screens]我可以获得连接到计算机的所有屏幕及其大小,但我试图找出它们彼此之间的相对位置(如显示首选项中的排列)。有办法做到这一点吗?我在苹果的开发者网站上查看了在线和类引用,没有发现任何东西。谢谢。啊哈!我正在浏览API,并找到了如何做。如果您获得NSScreen的-deviceDescription,则可以获得其CGDirectDisplayID。从那里,您可以使用ApplicationServices提供的Quartz显示服务获取CGDisplayBounds,

使用[NSScreen screens]我可以获得连接到计算机的所有屏幕及其大小,但我试图找出它们彼此之间的相对位置(如显示首选项中的排列)。有办法做到这一点吗?我在苹果的开发者网站上查看了在线和类引用,没有发现任何东西。谢谢。

啊哈!我正在浏览API,并找到了如何做。如果您获得NSScreen的
-deviceDescription
,则可以获得其
CGDirectDisplayID
。从那里,您可以使用ApplicationServices提供的Quartz显示服务获取
CGDisplayBounds
,它显示相对于所有屏幕的显示大小和位置。

对于
[NSScreen screens]
返回的每个屏幕,您可以调用:

[screen frame]
获取包含每个屏幕的
大小和
偏移量的
NSRect
。“主”屏幕(即带有菜单栏的屏幕)将具有偏移量
(0,0)


这应该比处理
-deviceDescription

Hmm简单得多,的确如此。我想我已经试过了,发现它只使用(0,0)来源。谢谢。这只为我显示0,0个来源。如果我使用调试器,我可以看到我想要的坐标,但当我读取它们时,它们是0,0。。啊!