我的 Cocoa 应用需要一些小的动态生成的窗口。如何在运行时以编程方式创建 Cocoa 窗口?
到目前为止,这是我的非工作尝试。我看不到任何结果。
NSRect frame = NSMakeRect(0, 0, 200, 200);
NSUInteger styleMask = NSBorderlessWindowMask;
NSRect rect = [NSWindow contentRectForFrameRect:frame styleMask:styleMask];
NSWindow * window = [[NSWindow alloc] initWithContentRect:rect styleMask:styleMask backing: NSBackingStoreRetained defer:false];
[window setBackgroundColor:[NSColor blueColor]];
[window display];
最佳答案
问题是你不想调用 display
,你想调用 makeKeyAndOrderFront
或 orderFront
取决于是否您希望窗口成为关键窗口。您还应该使用 NSBackingStoreBuffered
。
此代码将在屏幕左下方创建无边框的蓝色窗口:
NSRect frame = NSMakeRect(0, 0, 200, 200);
NSWindow* window = [[[NSWindow alloc] initWithContentRect:frame
styleMask:NSBorderlessWindowMask
backing:NSBackingStoreBuffered
defer:NO] autorelease];
[window setBackgroundColor:[NSColor blueColor]];
[window makeKeyAndOrderFront:NSApp];
//Don't forget to assign window to a strong/retaining property!
//Under ARC, not doing so will cause it to disappear immediately;
// without ARC, the window will be leaked.
您可以为 makeKeyAndOrderFront
或 orderFront
设置适合您情况的发件人。
关于objective-c - 如何以编程方式创建 Cocoa 窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/314256/