Мне нужны границы моего экрана, чтобы узнать самые маленькие и самые большие координаты x/y. Мое разрешение экрана 1440x900. Когда я спрашиваю NSScreen для видимого кадра, т.е.Видимая рамка из NSScreen слишком велика
NSRect frame = [[NSScreen mainScreen] visibleFrame]
Я получаю следующие X/Y значения:
xMin = NSMinX(frame) // 74
yMin = NSMinY(frame) // 0
xMax = NSMaxX(frame) // 1440
yMax = NSMaxY(frame) // 878
У меня есть док на левой стороне, таким образом, мой XMIN больше 0 и Ymin равен 0. Однако проблема заключается в yMax. Насколько я могу судить, панель меню высотой 44 пикселя, поэтому yMax должен быть 900 - 44 = 856 пикселей. Согласно NSScreen, строка меню может в большинстве случаев использовать 22 пикселя. Как так?
Дополнительная информация о моем прецеденте: я корректирую положение окон и размеры окон через Applescript. Чтобы узнать, какие значения допустимы, т. Е. Внутри видимого фрейма, мне нужно проверить видимый кадр NSScreen. Тем не менее, NSScreen начинает отсчет пикселей от нижнего левого, а Applescript начинается с верхнего левого. В процессе построения метода NSScreen для возврата его координаты из левого верхнего угла, я столкнулся с этой проблемой.
Трансформированная видимая рамка имеет yMin 22, таким образом, 22 пикселя от верхней границы. Я непосредственно экспериментировал с Applescript и узнал, что каждый yMin ниже 44 будет настроен на 44, так как строка меню занимает пространство от 0 до 43 пикселей.
Надеюсь, мои объяснения не были слишком запутанными. В конце концов, проблема заключается в том, что эксперименты показывают, что панель меню имеет высоту 44 пикселя, а NSScreen оставляет только 22 пикселя для строки меню (так как высота составляет 878 пикселей на экране с 900 пикселями).
EDIT: Высота строки меню является 22 пикселя. Проблема искателя заключается в том, как он обрабатывает события, связанные с его границностью.
Моя строка меню высотой 22 пикселя (или что-то в этом диапазоне). Определенно не 44. –