Does anyone know how you can make a cocoa sheet with rounded corners like the image below?
I've looked all over but I cannot seem to find anything on it. I'm not sure if I'm looking in the wrong places, or if this just isn't a common practice. Any ideas?
Edit: it turns out that this behavior is even easier if you're targeting OS X Lion or later - simply calling [sheet setOpaque:NO]
is enough to enable rounded corners.
This behavior is pretty easy to reproduce. Initialize your sheet to be a transparent borderless window:
self.sheet = [[NSWindow alloc] initWithContentRect:NSMakeRect(0, 0, 300, 300) styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered | NSTitledWindowMask defer:YES];
[self.sheet setOpaque:NO];
[self.sheet setBackgroundColor:[NSColor clearColor]];
Add as a subview a custom view:
[[self.sheet contentView] addSubview:[[IFWindowView alloc] initWithFrame:[[self.sheet contentView] frame]]];
That custom view should do its drawing as follows:
#define RADIUS 5.0
NSBezierPath *bezierPath = [NSBezierPath bezierPathWithRoundedRect:NSMakeRect(self.bounds.origin.x, self.bounds.origin.y + RADIUS, self.bounds.size.width, self.bounds.size.height) xRadius:RADIUS yRadius:RADIUS];
[[NSColor windowBackgroundColor] set]; // In production, use the appropriate color with alpha for transparency.
[bezierPath fill];
Here is some sample code to demonstrate this in action: http://d.pr/l9DB
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