I'm trying to crate a NSWindow without title bar (NSBorderlessWindowMask) with round corners and a shadow, similar to the below "Welcome to Xcode" window.

I make a subclass of NSWindow:
@implementation FlatWindow  - (id)initWithContentRect:(NSRect)contentRect styleMask:(NSUInteger)aStyle backing:(NSBackingStoreType)bufferingType defer:(BOOL)flag {     self = [super initWithContentRect:contentRect styleMask:NSBorderlessWindowMask backing:bufferingType defer:flag];      if ( self )     {         [self setOpaque:NO];         [self setBackgroundColor:[NSColor clearColor]];         [self setMovableByWindowBackground:TRUE];         [self setStyleMask:NSBorderlessWindowMask];         [self setHasShadow:YES];     }      return self; }  - (void) setContentView:(NSView *)aView {     aView.wantsLayer            = YES;     aView.layer.frame           = aView.frame;     aView.layer.cornerRadius    = 10.0;     aView.layer.masksToBounds   = YES;      [super setContentView:aView]; }  @end And a subclass of NSView:
@implementation ColoredView  - (void)drawRect:(NSRect)dirtyRect {     [super drawRect:dirtyRect];      [[NSColor windowBackgroundColor] set];     NSRectFill(dirtyRect); }  @end This gives me a window without title bar with round corners, but the default shadow on NSWindow is gone. How can I add the default shadow to this window?

EDIT1:
NSWindow with NSShadow. This shadow is not shown.
@implementation FlatWindow  - (id)initWithContentRect:(NSRect)contentRect styleMask:(NSUInteger)aStyle backing:(NSBackingStoreType)bufferingType defer:(BOOL)flag {     self = [super initWithContentRect:contentRect styleMask:NSBorderlessWindowMask backing:bufferingType defer:flag];      if ( self )     {         [self setOpaque:NO];         [self setBackgroundColor:[NSColor clearColor]];         [self setMovableByWindowBackground:TRUE];         [self setStyleMask:NSBorderlessWindowMask];         [self setHasShadow:YES];     }      return self; }  - (void) setContentView:(NSView *)aView {     aView.wantsLayer            = YES;     aView.layer.frame           = aView.frame;     aView.layer.cornerRadius    = 10.0;     aView.layer.masksToBounds   = YES;      NSShadow *dropShadow = [[NSShadow alloc] init];     [dropShadow setShadowColor:[NSColor blackColor]];     [dropShadow setShadowBlurRadius:10.0];     [aView setShadow: dropShadow];      [super setContentView:aView]; }  @end I realised old approach was not able to create precise round corner. So I updated example to make precise round corner.

        window1.backgroundColor             =   NSColor.whiteColor()         window1.opaque                      =   false         window1.styleMask                   =   NSResizableWindowMask                                             |   NSTitledWindowMask                                             |   NSFullSizeContentViewWindowMask         window1.movableByWindowBackground   =   true         window1.titlebarAppearsTransparent  =   true         window1.titleVisibility             =   .Hidden         window1.showsToolbarButton          =   false         window1.standardWindowButton(NSWindowButton.FullScreenButton)?.hidden   =   true         window1.standardWindowButton(NSWindowButton.MiniaturizeButton)?.hidden  =   true         window1.standardWindowButton(NSWindowButton.CloseButton)?.hidden        =   true         window1.standardWindowButton(NSWindowButton.ZoomButton)?.hidden         =   true          window1.setFrame(CGRect(x: 400, y: 0, width: 400, height: 500), display: true)         window1.makeKeyAndOrderFront(self) Here's full working example.
Special treatment is not required at least in OS X 10.10.
import Cocoa  class ExampleApplicationController: NSObject, NSApplicationDelegate {     class ExampleController {          let window1 =   NSWindow()         let view1   =   NSView()          init(){             window1.setFrame(CGRect(x: 400, y: 0, width: 400, height: 500), display: true)             window1.contentView                 =   view1              window1.backgroundColor             =   NSColor.clearColor()             window1.opaque                      =   false             window1.styleMask                   =   NSBorderlessWindowMask | NSResizableWindowMask             window1.movableByWindowBackground   =   true             window1.makeKeyAndOrderFront(self)              view1.wantsLayer                =   true             view1.layer!.cornerRadius       =   10             view1.layer!.backgroundColor    =   NSColor.whiteColor().CGColor              /// :ref:   http://stackoverflow.com/questions/19940019/nswindow-with-round-corners-and-shadow/27613308#21247949             window1.invalidateShadow()  //  This manual invalidation is REQUIRED because shadow generation is an expensive operation.         }     }      let example1    =   ExampleController() } You can download a working example from here.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With