2009-09-03 17 views
6

NSWindow(ピクセル単位)のサイズを取得して表示する方法はありますか?人がウィンドウのサイズを変更すると、テキストが変更され、新しいサイズが表示されます。どうnswindowのサイズを取得

答えて

12

あなたは、ウィンドウのデリゲートとして設定されたオブジェクトのメソッド

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

を実装する場合は、それが呼び出されます。そこから、サイズを表示するために使用するテキストフィールドを更新することができます。

+0

は、ここで私が持っているものだOK: - (NSSize)windowWillResize:(NSWindowの*)sendertoSize:(NSSize)フレームサイズ { \t [長setStringValue:@ "thisworks"]; \t [幅setStringValue:@ "テスト"]; \t return; } (文字列は、それが動作することを確認するテストです) すべてが正しくIBに接続され、それがすべて保存されます。しかし、私がアプリケーションを実行すると、単に "ラベル"が表示されます。 –

+0

上記のコードはデリゲートにありますか?より多くの文脈を提供しなければならないコードで質問を更新できますか? – fbrereto

+0

窓口にあります –

5

:ウィンドウのサイズを変更するたびに

CGSize window_size = my_window.frame.size; 
0

代わりにサイズ変更を処理しようとすると、あなたの代わりにあなたの意見自動サイズ変更マスクが正しく設定されていることを確認する必要があります。 Interface Builderでは、ビューを選択してサイズインスペクタ(⌘3)でこれを行います。

自動階層化マスクを設定せずにビュー階層全体を整理している場合は、少し先がありますが、面倒ではありません(ちょっと退屈です)、時間がかかりません。このため、設定したビューの自動サイズ変更マスクを作成するときに、その設定を行う必要があります。

自動調整マスクが設定されると、ビューのサイズが自動的に変更されます。あなたのインターフェイスが非常に複雑でないか、または任意のビューがゼロサイズになることができない限り、あなたは介入する必要はありません。

+0

どうすればNSTextFieldを使ってサイズを表示できますか? –

+0

ああ、私はあなたがサイズを取得し、それを使ってあなたのビューのサイズを変更することを求めていると思った。ごめんなさい。私はケンの答えを支持する。 –

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

...あなたが探しているものです。 fbreretoの提案は、NSWindowのタイトルバーを含むサイズが必要な場合に使用する必要があります。

+0

また、ウィンドウの 'frame'を取得し、ウィンドウに' contentRectForFrameRect: 'メッセージを送信して変換します。 –

関連する問題