1

这是我的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-14400origin.xNSScreen01440

4

1 回答 1

8

[NSScreen 屏幕] 之一将以 (0, 0) 作为原点。
现在想象 2 个轴:Y 从 (0, 0) 向上,X 向右。
所有其他屏幕将具有与此坐标系的坐标,并且 screen.frame.origin 将代表左下角。

我在文档中找不到这个,所以我发现这个是在尝试显示排列。
我用两台显示器拍了这张照片:主显示器 1366x768,副显示器 1680x1050,与顶部对齐。
我也尝试了不同的安排,将#1 移动到#0 周围,我的假设总是正确的。

于 2013-02-08T18:36:56.770 回答