代碼示例
NSRect frame = CGRectMake(0, 0, 200, 200);
NSUInteger style = NSTitledWindowMask | NSClosableWindowMask |NSMiniaturizableWindowMask | NSResizableWindowMask;
NSWindow *window = [NSWindow alloc]initWithContentRect:frame styleMask:style backing:NSBackingStoreBuffered defer:YES];
window.title = @"New Create Window";
//視窗顯示
[window makeKeyAndOrderFront:self];
//視窗居中
[window center];”
styleMask:視窗風格
enum {
NSBorderlessWindowMask = 0, //沒有頂部titlebar邊框
NSTitledWindowMask = 1 << 0, //有頂部titlebar邊框
NSClosableWindowMask = 1 << 1, //帶有關閉按鈕
NSMiniaturizableWindowMask = 1 << 2, //帶有最小化按鈕
NSResizableWindowMask = 1 << 3, //恢複按鈕
NSTexturedBackgroundWindowMask = 1 << 8 //帶紋理背景的window
};
backing:視窗繪制的緩存模式
enum {
NSBackingStoreRetained = 0, //相容老系統參數,基本很少用到
NSBackingStoreNonretained = 1, //不緩存直接繪制
NSBackingStoreBuffered = 2 //緩存繪制
};
視窗通知
NSWindowDidBecomeKeyNotification: 視窗成為keyWindow
NSWindowDidBecomeMainNotification:視窗成為mainWindow
NSWindowDidMoveNotification: 視窗移動
NSWindowDidResignKeyNotification: 視窗不再是keyWindow
NSWindowDidResignMainNotification:視窗不再是mainWindow
NSWindowDidResizeNotification: 視窗大小改變
NSWindowWillCloseNotification: 關閉視窗
NSWindow 中的 contentView
關閉視窗時退出程式
方法一:
- (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)application {
return YES;
}
方法二:利用 NSWindowDelegate
- (void)windowWillClose:(NSNotification *)notification
{
NSWindow *window = notification.object;
if(window == self.window) {
[NSApp terminate:self];
// [[NSApplication sharedApplication] terminate:nil]; //或這句也行
}
}
設定Window的image和title
- (void)setWindowIcon {
[self.window setRepresentedURL:[NSURL URLWithString:@"WindowTitle"]];
[self.window setTitle:@"SQLiteApp"];
NSImage *image = [NSImage imageNamed:@"windowIcon"];
[[self.window standardWindowButton:NSWindowDocumentIconButton] setImage:image];
}
**關閉視窗**
[self.window miniaturize:sender];