Есть несколько вещей, которые необходимо учитывать при определении размера окна для отображения под OS X.
Во-первых, есть размер области отображения. Вы можете использовать
NSRect frame = [[NSScreen mainScreen] frame];
, но это немного упрощенным, так как пользователь может отображать Dock, и есть почти всегда в строке меню отображается, а также. Таким образом, лучшим способом определения максимальной области отображения для рабочего стола будет:
NSRect frame = [[NSScreen mainScreen] visibleFrame];
, который уважает панель меню и док-станцию.
Как указывали другие, этот прямоугольник редко является идеальным для окна. Поймите также, что этот прямоугольник является только отправной точкой, потому что ваш пользователь может иметь несколько дисплеев, и они вносят вклад в общую область, в которой может отображаться окно. Но при отображении нового окна вы всегда начинаете в этом прямоугольнике. Посмотрите на документацию NSScreen
, чтобы определить это; описанные выше методы обеспечат вам трамплин.
Я не знаю, как вы планируете создавать и использовать свое окно, но для всех, кроме самых простых приложений, вы, вероятно, будете использовать подкласс NSWindowController. Если это так, это будет делегат вашего окна. И таким образом есть важный метод окна делегат, что вам нужно реализовать в нем, и это:
- (NSRect)windowWillUseStandardFrame:(NSWindow *)window defaultFrame:(NSRect)newFrame
Здесь вы определяете «стандарт» расположение и размер кадра вашего окна. Он вызывается окном, когда окно масштабируется «вне» на так называемое «стандартное состояние» (по сравнению с размером, который пользователь делает, «пользовательское состояние»).Другими словами, это прямоугольник, который лучше всего подходит для содержимого вашего окна, но имеет в виду прямоугольник, описывающий «безопасную» область, в которой вы можете отображать ее. К сожалению, я не могу точно сказать, как его кодировать, потому что он полностью зависит от того, что вы показываете внутри своего окна.
Таким образом, вы можете видеть, что определение «правильное» - это нечто совершенно отличное от определения в iOS. С наилучшими пожеланиями в ваших начинаниях.
Размер окна и цели развертывания - это два разных предмета. –