奇怪的NSScreen坐标

时间:2013-01-29 09:45:44

标签: macos cocoa nswindow

这是我的NSWindow子类的构造函数FullScreenWindow

- (id)initWithScreen:(NSScreen *)s {
NSRect contentRect = [s frame];
self = [super initWithContentRect:contentRect
                        styleMask:NSBorderlessWindowMask
                          backing:NSBackingStoreBuffered
                            defer:NO
                           screen:s];
if (self) {
    [self setCollectionBehavior:NSWindowCollectionBehaviorStationary|
                                NSWindowCollectionBehaviorCanJoinAllSpaces|
                                NSWindowCollectionBehaviorIgnoresCycle];
    [self setReleasedWhenClosed:YES];
    [self setBackgroundColor:[NSColor greenColor]];
    [self setAlphaValue:1.0];
    [self setOpaque:NO];
    [self setLevel:NSMainMenuWindowLevel-1];
}
return self;

}

我想为NSWindow中的每个显示添加[NSScreen screens],但是当我连接第二个显示时,如果设置origin.x contentRect,则窗口只显示正确的方式第一次显示为-1440(第二次为0)。当我获得origin.x个实例的NSScreen个值时,它会为第一个显示返回0,为第二个显示返回1440。为什么这些坐标会移位?

1 个答案:

答案 0 :(得分:5)

其中一个[NSScreen屏幕]将有(0,0)作为原点 现在想象两个轴:Y从(0,0)上升,X到右边 所有其他屏幕都将具有此坐标系的坐标,screen.frame.origin将代表左下角。

我在文档中找不到这个,所以我发现这个实验用显示器安排 我有两台显示器的照片:主显示器1366x768,辅助设备1680x1050,与顶部对齐 我尝试了不同的安排,在#0附近移动#1,我的假设总是正确的。