NSScreen visibleFrame不会减去菜单栏区域

时间:2012-07-25 11:07:25

标签: cocoa

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

NSScreen

,输出如下:
可见矩形

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);

Screen Rect

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

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

1 个答案:

答案 0 :(得分:3)

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