2

visibleFrameメソッドを使用し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);

出力は次のとおりです。
Visible Rect

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

スクリーン長方形

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

上記の出力から、ドックの高さが 80 であると推測できます (表示されている四角形の原点の "Y" 座標が 80 であるため)。したがって、表示される長方形の高さは次のようになるはずです:
(画面の高さ - ドックの高さ - メニューバーの高さ)
は次のようになります:
1080 - 80 - メニューバーの高さ
、これはどのような状況でも 1000 未満である必要がありますですが、上記の出力に見られるように、正確に 1000 です。これは、メニュー バーの高さが差し引かれていないことを意味します。
これはバグvisibleFrameですか、それともどこかで間違いを犯していますか?

4

1 に答える 1

4

答えは自分で見つけました。[[NSScreen alloc]init];NSScreen オブジェクトを取得するために使用していましたが、使用する必要がありました[NSScreen mainScreen];

于 2012-07-26T03:56:43.600 に答える