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

标签 objective-c xcode cocoa nsview

我试图让我以编程方式创建的 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/

相关文章:

ios - UIImageView 重新调整大小并同时旋转 UIImageView?

ios - didSelectRowAtIndexPath 不以编程方式导航到 destinationView

macos - 是否可以使用 Preview.app 在特定页面打开 PDF?

objective-c - 连接 UITextField 以更新标签

objective-c - 检查是否+[UIImage imageNamed :] found an image

ios - Mac Air 上的 cordova 安装

xcode - codesign --深入小牛 xcode 5.0 (5A1412)

iphone - MKMap 不使用定义的纬度和经度

objective-c - NSTextView 占位符文本仅在选择时可见

cocoa - 核心数据和@unionOfSets