Есть ли способ получить размер NSWindow (в пикселях) и отобразить его? Поэтому, когда человек изменит размер окна, текст изменится и отобразит новый размер.
получить размер nswindow
Ответы (4)
Если вы реализуете метод
- (NSSize)windowWillResize:(NSWindow *)sender toSize:(NSSize)frameSize
для объекта, который вы установили в качестве делегата окна, он будет вызываться всякий раз, когда окно меняет размер. Оттуда вы можете обновить текстовое поле, которое вы используете для отображения размера.
length и width розетки в IB? Если они не установлены, вы отправляете сообщение nil, которое ничего не делает.
- person Peter Hosey; 04.09.2009
void. Вы должны вернуть значение. В частности, вы должны вернуть размер, до которого вы хотите изменить размер окна. Предполагая, что вам на самом деле не нужен какой-либо конкретный размер или каким-либо образом ограничивать размер, просто верните предложенный размер.
- person Peter Hosey; 04.09.2009
NSWindowDelegate; Я знаю, что вы получите предупреждение, если попытаетесь установить его в коде без этого, но я не знаю, пытается ли NSWindow обеспечить это соответствие, если вы строите версию 10.6.
- person Peter Hosey; 04.09.2009
Как насчет:
CGSize window_size = my_window.frame.size;
NSSize myNSWindowSize = [ [ myNSWindow contentView ] frame ].size;
... должно быть то, что вы ищете. Предложение fbrereto — это то, что вам следует использовать, если вы хотите, чтобы размер включал строку заголовка NSWindow.
frame окна, а затем отправить окну сообщение contentRectForFrameRect:, чтобы преобразовать его.
- person Peter Hosey; 15.12.2009
Вместо того, чтобы пытаться обрабатывать изменения размеров, вы должны убедиться, что маски автоматического изменения размера ваших представлений установлены правильно. В Interface Builder вы делаете это в инспекторе размера (⌘3) с выбранными представлениями.
Если вы выложили всю иерархию представлений без установки их масок автоматического изменения размера, вам предстоит немного утомительной работы, но это несложно (просто утомительно) и не займет много времени. Вот почему вы должны устанавливать маски автоматического изменения размеров представлений при их создании.
После установки масок автоизменения размер представлений изменится автоматически; если ваш интерфейс не очень сложен или какие-либо представления не могут уменьшиться до нуля, вам не нужно вмешиваться.