打開關閉
關閉視窗:[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{