2

我正在使用visibleFrameof 方法,NSScreen它看起来好像没有从可见矩形中减去菜单栏区域(Dock 位于屏幕底部)。从以下代码的输出中可以明显看出:

NSRect visibleFrame = [screenInfo visibleFrame];
NSLog(@"\nx=%f , y=%f\nw=%f , h=%f",visibleFrame.origin.x,visibleFrame.origin.y,visibleFrame.size.width,visibleFrame.size.height);
NSRect screenFrame1 = [screenInfo frame];
NSLog(@"\nx=%f , y=%f\nw=%f , h=%f",screenFrame1.origin.x,screenFrame1.origin.y,screenFrame1.size.width,screenFrame1.size.height);

输出如下:
可见矩形

x=0.000000 , y=80.000000
w=1920.000000 , h=1000.000000

屏幕矩形

x=0.000000 , y=0.000000
w=1920.000000 , h=1080.000000

我们可以从上面的输出推断出dock的高度是80(因为可见矩形原点的“Y”坐标是80)。因此,可见矩形的高度应该是:(
屏幕高度 - 停靠栏高度 - 菜单栏高度)
结果为:
1080 - 80 - 菜单栏高度,
在任何情况下都应该小于 1000 ,但从上面的输出中可以看出,它正好是 1000。这意味着菜单栏的高度没有被减去。
这是一个错误visibleFrame还是我在某个地方犯了错误?

4

1 回答 1

4

自己想出了答案。我[[NSScreen alloc]init];用来获取 NSScreen 对象,而我应该使用[NSScreen mainScreen];

于 2012-07-26T03:56:43.600 回答