gpt4 book ai didi

objective-c - 使 NSViews 和 NSWindows 具有固定位置

转载 作者:行者123 更新时间:2023-12-03 17:58:12 25 4
gpt4 key购买 nike

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

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

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

最佳答案

首先,你问的问题不明确。 “同一个地方”是什么意思?

您没有显示宽度是什么。假设它是窗口的宽度,您显示的内容将计算一个 X 位置,该位置使窗口在“主”屏幕上水平居中。然而,-mainScreen可能不会像你想象的那样。如果您想要主显示器(带有菜单栏的显示器),则需要 [[NSScreen Screens] objectAtIndex:0]

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

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

关于objective-c - 使 NSViews 和 NSWindows 具有固定位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10366651/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com