这是我的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
。为什么这些坐标会移位?
答案 0 :(得分:5)
其中一个[NSScreen屏幕]将有(0,0)作为原点 现在想象两个轴:Y从(0,0)上升,X到右边 所有其他屏幕都将具有此坐标系的坐标,screen.frame.origin将代表左下角。
我在文档中找不到这个,所以我发现这个实验用显示器安排 我有两台显示器的照片:主显示器1366x768,辅助设备1680x1050,与顶部对齐 我尝试了不同的安排,在#0附近移动#1,我的假设总是正确的。