2012-03-29 34 views
1

在目標C中,我嘗試在單擊按鈕後調整應用程序窗口大小。如果窗口是200x200,則按(+)按鈕使其成爲200x210,或按( - )按鈕使其成爲200x190。ObjC - 調整大小和獲取窗口尺寸

我只是不確定如何在編輯器中創建窗口後設置窗口大小。

沒有示例代碼,因爲它很簡單,我不確定從哪裏開始。

回答

2

在這裏你去:

- (IBAction)plusButtonClicked:(NSControl *)sender 
{ 
    NSRect frame = sender.window.frame; 

    frame.size.height += 20; 

    [sender.window setFrame:frame display:YES animate:YES]; 
} 

根據您是否希望窗口的頂部或底部的擴展,您可能還需要:

frame.origin.y -= 20; 
+0

非常感謝。那很完美。但是,如何在應用程序初始化時將其發送到窗口,例如在應用程序委託中調用此窗口? – 2012-03-29 03:37:03

+0

根據您的xib文件的結構,可能很難使用您的應用程序委託。通常你需要一個與窗口相同xib的控制器對象,然後有一個連接它們的插座,它在awakeFromNib中調整大小。如果您嘗試在應用程序啓動時記住窗口大小,NSWindow具有自動保存功能,您應該能夠在界面構建器的窗口中鍵入自動保存標識符,並且它會記住以前的大小/位置。 – 2012-03-29 04:08:07

+0

還有一件事是Abhi,我在這裏發佈了另一個問題,但我正在使用另一件事來調整窗口的大小,除非它將窗口調整到一個設定的高度,而不是增加到當前的高度。問題是,窗口內的項目正在消失,我認爲它與origin.y是關閉... http://stackoverflow.com/questions/9920025/obj-c-resizing-window-removes -window項 – 2012-03-30 03:48:44

0

看看setFrame:display:在NSWindow類參考中。

+0

我能不能用一個IBOutlet NSWindow *然後setFrame到那個窗口? NSWindow *連接到窗口界面構建器。 – 2012-03-29 03:51:39

+0

是的,你就是這麼做的 - 你需要一些對你的窗口的引用,而IBOutlet就是這個引用。您也可以使用NSApplication方法mainWindow來獲取應用程序的主窗口。 – rdelmar 2012-03-29 04:00:06