天天看點

Interface Builder 視窗操作

打開關閉

關閉視窗:[theWindow close];

關閉視窗并釋放記憶體:

[theWindow setReleasedWhenClosed:YES]

[theWindow close];

建立視窗:theWindow=[[NSWindow alloc] init];

顯示視窗:[theWindow makeKeyAndOrderFront:self];

隐藏顯示

隐藏視窗:

-(IBAction) hideWindow:(id)sender{

[theWindow orderOut:sender];

}

顯示視窗:[theWindow orderFront:sender];

檢視視窗狀态:[theWindow isVisible]

設定視窗作為主視窗:在awakeFromNib方法(當應用程式啟動,視窗資源從NIB檔案中加載時開始執行)中實作

-(void)awakeFromNib{

[theWindow makeKeyAndOrderFront:nil];

定位

-(void)frame 方法以NSRect結構傳回窗體目前位置資訊

typeof struct _NSRect{

NSPoint origin;

NSSize size;

}NSRect;

-(void)setFrameOrigin:(NSPoint)origin 方法設定頂點位置

-(void)setFrame:(NSRect)frame 方法設定視窗

NSRect theFrame=[theWindow frame];

theFrame.origin.x=theFrame.origin.x/2;

theFrame.size.width=theFrame.size.with/2;

[theWindow setFrame:theFrame display:YES];

使窗體位于螢幕中心 :[theWindow center];

修改視窗顯示狀态(正常<->全屏):[theWindow zoom];

跟蹤

如果視窗具體:有标題欄,視窗大小可變,可以作為主視窗,這三個屬性,則建立時Cocoa自動把它加到視窗清單中,不滿足其中一項就會從清單中移出,都滿足時也可在視窗加載時通過下面方法移出

[theWindow setExcludedFromWindowsMenu:nil];

顯示

窗體風格要跟窗體的作用一緻

視窗标題:[theWindow setTitle:@"MyWindow"];

标題顯示檔案名,點選檔案可打開檔案:[theWindow setTitleWithRepresentedFilename:theFileName];

設定窗體透明度:[theWindow setAlphaValue:num];(num:0->1:透明->實體)

在一個窗體中建立另一個窗體

從Library中拉一個Panel到XIB 項目中

分别向Panel和主窗體中加入一個按鈕用來顯示和關閉窗體

從Library中拉一個Object到XIB項目中,重新命名為MyObject,并添加兩個Class Outlets(theWindow,theSheet),和兩個Class Actions(openSheet,closeSheet),并為此建立類檔案MySheet

綁定:Panel<>theSheet,Window(主窗體)<>theWindow,以及openSheet跟closeSheet分别綁定到主窗體跟Panel中的Button上

定義類檔案MySheet:

#import <Cocoa/Cocoa.h>

@interface MySheet : NSObject {

IBOutlet id theWindow;

IBOutlet id theSheet;

- (IBAction) openSheet:(id)sender;

- (IBAction) closeSheet:(id)sender;

@end

#import "MySheet.h"

@implementation MySheet

- (IBAction) openSheet:(id)sender{

[NSApp beginSheet: theSheet

modalForWindow:theWindow

modalDelegate:self

didEndSelector:NULL

  contextInfo:nil];

- (IBAction) closeSheet:(id)sender{

[theSheet orderOut:nil];

[NSApp endSheet: theSheet];

響應視窗事件

通過代理實作

在MainMenu.xib 中Control + 拖動Window窗體到MyObject(從Library拉入XIB 項目中的Object),選中Delegate

在Xcode界面下MyObject對應類的implementation檔案中輸入系統已定義的事件代理的實作:最小化時發出一個系統提供提聲音(windowDidMiniaturize為系統已定義的事件代理)

-(void)windowDidMiniaturize:(NSNotification *)notification{

繼續閱讀