0

我试图让我以编程方式创建的 NSView 和窗口具有固定位置,无论我的屏幕分辨率是多少,也无论我连接到主桌面的显示器有多少。例如,如果我有一个外接显示器,或者如果我决定更改我的屏幕分辨率,我希望我的 NSView 或 NSWindow 的 NsRect 始终出现在同一个地方。这行得通吗?

NSRect mainFrame = [[NSScreen mainScreen] frame]
NSRect helpFrame = NSZeroRect;
helpFrame.origin.x = (mainFrame.size.width - width) / 2.0;

无论分辨率是多少,这会使我的窗口的 x 值始终位于中心吗?我觉得当我连接外接显示器时,分辨率会发生变化,屏幕中间不再是我想要的位置。NSScreen mainScreen打电话合适吗?谢谢!

4

1 回答 1

1

首先,你问的是模棱两可的。“同一个地方”是什么意思?

你不显示是什么width。假设它是窗口的宽度,您显示的将计算一个 X 位置,该位置在“主”屏幕上水平居中窗口。但是,-mainScreen可能不会按照你的想法去做。如果您想要主显示器,即带有菜单栏的显示器,您需要[[NSScreen screens] objectAtIndex:0].

但是,即使您使用显示的计算设置窗口的框架,如果屏幕配置发生更改,它也不会使其保持居中。您需要NSApplicationDidChangeScreenParametersNotification从应用程序对象中观察并重新定位它。

顺便问一下,你不使用有什么原因-[NSWindow center]吗?

于 2012-04-28T19:33:39.007 回答