我能夠做的就是提供我NSWindow的自定義子類:
@implementation ELGRoundWindow
- (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 setStyleMask:NSBorderlessWindowMask];
[self setOpaque:NO];
[self setBackgroundColor:[NSColor clearColor]];
}
return self;
}
- (void) setContentView:(NSView *)aView
{
aView.wantsLayer = YES;
aView.layer.frame = aView.frame;
aView.layer.cornerRadius = 20.0;
aView.layer.masksToBounds = YES;
[super setContentView:aView];
}
@end
,然後在IB,我換了班我的內容視圖來ELGRoundView:
@implementation ELGRoundView
- (void)drawRect:(NSRect)dirtyRect
{
[[NSColor colorWithCalibratedRed:0.0 green:0.5 blue:1 alpha:1] set];
NSRectFill(dirtyRect);
}
@end
我在我的內容視圖中放置了另一個方形子視圖,內容如下:
@implementation ELGSquareView
- (void)drawRect:(NSRect)dirtyRect
{
[[NSColor colorWithCalibratedRed:0.0 green:0 blue:1 alpha:1] set];
NSRectFill(dirtyRect);
}
@end
我結束了:
其他讀者應該注意,OpenGL應用程序應該只對整個場景使用一個'glDrawArrays()'命令,否則該圖層會導致奇怪的結果。在這個問題的範圍中,對於OS X樣式角使用4.5-5.0的拐角半徑。如果你願意的話,你也可以保持正常的標題欄,而不會讓它看起來太不同。 – Justin 2013-03-03 02:48:54
@ericgorr任何想法如何讓這個陰影? – 2013-06-21 06:26:49