How do I create a Cocoa window programmatically?

前端 未结 5 965
执念已碎
执念已碎 2020-12-04 08:21

My Cocoa app needs some small dynamically generated windows. How can I programmatically create Cocoa windows at runtime?

This is my non-working attempt so far. I see

5条回答
  •  爱一瞬间的悲伤
    2020-12-04 09:13

    The problem is that you don't want to call display, you want to call either makeKeyAndOrderFront or orderFront depending on whether or not you want the window to become the key window. You should also probably use NSBackingStoreBuffered.

    This code will create your borderless, blue window at the bottom left of the screen:

    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.
    

    You can make the sender for makeKeyAndOrderFront or orderFront whatever is appropriate for your situation.

提交回复
热议问题