2009-09-03 11 views
6

Czy jest jakiś sposób uzyskać rozmiar NSWindow (w pikselach) i wyświetlić go? Kiedy więc osoba zmieni rozmiar okna, tekst zmieni się i wyświetli nowy rozmiar.Uzyskaj rozmiar nswindow

Odpowiedz

12

W przypadku zastosowania metody

- (NSSize)windowWillResize:(NSWindow *)sender toSize:(NSSize)frameSize

na obiekcie można ustawić jako delegat oknie, będzie się nazywać, gdy okno zmiany rozmiaru. Stamtąd możesz zaktualizować pole tekstowe, którego używasz do wyświetlania rozmiaru.

+0

ok oto co mam: - (NSSize) windowWillResize: (NSWindow *) sendertoSize: (NSSize) frameSize { \t [długość setStringValue: @ "thisworks"]; \t [width setStringValue: @ "test"]; \t return; } (ciągi są testowane, aby upewnić się, że działa) Wszystko jest poprawnie połączone z IB, wszystko jest zapisane. Ale kiedy uruchamiam aplikację, po prostu pokazuje "label", nie mówi tego, co powiedziałem. –

+0

Czy powyższy kod należy do delegata? Czy możesz zaktualizować swoje pytanie za pomocą kodu, który musisz podać więcej kontekstu? – fbrereto

+0

jest w oknie delegata –

5

Co o:

CGSize window_size = my_window.frame.size; 
0

Zamiast próbować obsługiwać zmiany rozmiaru, należy zamiast tego upewnić się, że maski autouzupełniania widoków są ustawione poprawnie. W programie Interface Builder robisz to w Inspektorze rozmiaru (⌘3) z wybranymi widokami.

Jeśli opuściłeś całą hierarchię widoków bez ustawiania maski automatycznego naświetlania, masz przed sobą trochę nudy, ale nie jest to trudne (tylko żmudne) i nie potrwa długo. Dlatego powinieneś ustawić maski autoreize widoku podczas ich tworzenia.

Po ustawieniu maskowania automatycznego, widoki zmieniają się automatycznie; chyba że twój interfejs jest bardzo skomplikowany, lub dowolny widok może spaść do zera, nie musisz interweniować.

+0

jak to pozwoli mi wyświetlić rozmiar przy użyciu NSTextField? –

+0

Och, myślałem, że prosisz o rozmiar i zmieniasz swoje poglądy. Przepraszam. Popieram odpowiedź Kena. –

2
NSSize myNSWindowSize = [ [ myNSWindow contentView ] frame ].size; 

... powinno być to, czego szukasz. Propozycja fbrereto jest tym, czego powinieneś użyć, jeśli chcesz mieć rozmiar, w tym pasek tytułu NSWindow.

+0

Alternatywnie, zdobądź "ramkę" okna, a następnie wyślij do okna wiadomość 'contentRectForFrameRect:', aby ją przekonwertować. –

Powiązane problemy