Мне нужны границы моего экрана, чтобы знать самые маленькие и самые большие координаты х / у. У меня разрешение экрана 1440х900. Когда я спрашиваю NSScreen для видимой рамки, то есть
NSRect frame = [[NSScreen mainScreen] visibleFrame]
Я получаю следующие значения х / у:
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 пикселей).
РЕДАКТИРОВАТЬ: Высота строки меню составляет 22 пикселей. Проблема в том, как он обрабатывает события, связанные со свойством границ.