2011-04-23 7 views
2

가장 작고 큰 x/y 좌표를 알기 위해서는 화면 경계가 필요합니다. 내 화면 해상도는 1440x900입니다.NSScreen의 보이는 프레임이 너무 큽니다.

xMin = NSMinX(frame) // 74 
yMin = NSMinY(frame) // 0 
xMax = NSMaxX(frame) // 1440 
yMax = NSMaxY(frame) // 878 

내가 이렇게 내이 xMin이 0 Ymin를가 큰, 왼쪽에있는 독을 가지고 : 나는 즉, 눈에 보이는 프레임

NSRect frame = [[NSScreen mainScreen] visibleFrame] 

을 NSScreen을 물어 보면 나는 다음과 같은 X/Y 값을 얻을 그러나 문제는 yMax입니다. 내가 말할 수있는 한 메뉴 막대는 44 픽셀이므로 yMax는 900 - 44 = 856 픽셀이어야합니다. NSScreen에 따르면 메뉴 막대는 최대 22 픽셀까지 사용할 수 있습니다. 방법 것입니다?


내 사용 사례에 대한 추가 정보 : AppleScript로 창 위치와 창 크기를 조정합니다. 허용되는 값, 즉 보이는 프레임 내부의 값을 확인하려면 NSScreen의 표시 프레임을 확인해야합니다. 그러나 NSScreen은 왼쪽 하단에서 픽셀을 계산하기 시작하고 AppleScript는 왼쪽 상단부터 시작합니다. NSScreen이 좌상단에서 좌표를 반환하는 메서드를 만드는 과정에서이 문제가 발생했습니다.

변환 된 가시 프레임의 yMin은 22이므로 상한선에서 22 픽셀입니다. 나는 Applescript를 직접 실험했고 메뉴 막대가 0에서 43 픽셀까지의 공간을 차지하기 때문에 44 이하의 모든 yMin이 44로 조정된다는 것을 알았습니다.


내 설명이 너무 혼란스럽지 않았 으면 좋겠다. 결국 문제는 메뉴 막대가 44 픽셀 높이라는 것을 실험에서 보여 주지만 NSScreen은 메뉴 막대에 대해 22 픽셀 만 남겨 둡니다 (높이는 900 픽셀 스크린에서 878 픽셀이기 때문에).


EDIT : 메뉴 바 의 높이는 22 화소이다. 파인더가 자신의 경계에 관한 사건을 처리하는 방법은 문제입니다.

+0

내 메뉴 표시 줄의 높이가 22 픽셀 (또는 그 범위에있는 항목)입니다. 44. –

답변

2

메뉴 막대는 22 픽셀입니다. 테스트로, 텍스트 편집기를 열려면 화면 상단의 창을 누르면, 다음이 AppleScript로를 실행하고 당신은 당신이보고있는 문제는 방법을 찾기가 측정되어 함께 22

tell application "TextEdit" 
    bounds of window 1 
end tell 

의 볼의 창문. 10.6에서 뭔가 바뀌 었습니다. 창의 제목 표시 줄은 Finder에서 차지하지 않으므로 창의 0 위치는 왼쪽 위 모서리가 아니고 일부 픽셀은 그 위치에서 아래로 향하게됩니다. 필자는 또한 창 위치를 스크립트하고 내 코드가 10.5와 10.6 사이에서 달라야한다는 것을 알았습니다. 예를 들어, Finder 윈도우를 열고 화면 상단으로 밀어 다음이 코드를 실행 ... 그것은 44

tell application "Finder" 
    bounds of window 1 
end tell 

, 그것은 Finder의 증명 같은 파인더에이 스크립트를 실행하는 방법을 보여줍니다 창문. 시스템 이벤트와 Finder의 정보를 확인하십시오. 10.5 및 이전 버전에서는 Finder가 이러한 불일치를 나타내지 않았 음을 기억하십시오.

tell application "System Events" 
    tell process "Finder" 
     set s to size of window 1 
     set p to position of window 1 
     return {p, s} 
    end tell 
end tell 
+0

맞습니다. "경계선"속성을 사용하여 Finder 윈도우의 위치를 ​​설정하고 읽었습니다. "크기"및 "위치"속성은 의도 한대로 작동하지만 내게 필요한 옵션을 사용하도록 설정해야합니다. 그러나 다양한 응용 프로그램을 직접 실험 해 보았습니다. Xcode 창은 bounds-property가 사용되면 왼쪽 아래부터 시작하고 position/size-properties가 사용되면 왼쪽 위부터 시작됩니다. 나는 크기/위치와 함께 가야만하는 것처럼 보입니다 ... –

관련 문제