代碼示例
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:窗口風(fēng)格
enum {
NSBorderlessWindowMask = 0, //沒有頂部titlebar邊框
NSTitledWindowMask = 1 << 0, //有頂部titlebar邊框
NSClosableWindowMask = 1 << 1, //帶有關(guān)閉按鈕
NSMiniaturizableWindowMask = 1 << 2, //帶有最小化按鈕
NSResizableWindowMask = 1 << 3, //恢復(fù)按鈕
NSTexturedBackgroundWindowMask = 1 << 8 //帶紋理背景的window
};
backing:窗口繪制的緩存模式
enum {
NSBackingStoreRetained = 0, //兼容老系統(tǒng)參數(shù),基本很少用到
NSBackingStoreNonretained = 1, //不緩存直接繪制
NSBackingStoreBuffered = 2 //緩存繪制
};
窗口通知
NSWindowDidBecomeKeyNotification: 窗口成為keyWindow
NSWindowDidBecomeMainNotification:窗口成為mainWindow
NSWindowDidMoveNotification: 窗口移動(dòng)
NSWindowDidResignKeyNotification: 窗口不再是keyWindow
NSWindowDidResignMainNotification:窗口不再是mainWindow
NSWindowDidResizeNotification: 窗口大小改變
NSWindowWillCloseNotification: 關(guān)閉窗口
NSWindow 中的 contentView
關(guān)閉窗口時(shí)退出程序
方法一:
- (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]; //或這句也行
}
}
設(shè)置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];
}