可可 Mac Sheet 圆角(像 Xcode 4)

6

有人知道如何制作类似下面图片中的带圆角的可可表格吗?

Xcode 4 圆角表格

Xcode 4 Sheet - Rounded Corners

我已经找遍了所有地方,但似乎找不到任何相关信息。我不确定是我在错误的地方查找,还是这不是一种常见的做法。有什么想法吗?


你尝试过查看NSPanel参考文档吗? - CodaFi
@CodaFi 这与NSPanel无关。 - Itai Ferber
添加了示例代码到我的回答中 - 只是想让你知道(留下评论会弹出通知 - 只编辑我的回答不会)。 - Itai Ferber
@Itai Ferber非常感谢!一切都完美地运作了! - Hunter Dolan
太好了,很高兴能帮助到您! - Itai Ferber
我又更新了我的答案,加入了一些新的信息。想让你知道。 - Itai Ferber
2个回答

10

编辑:事实证明,如果您的目标是OS X Lion或更高版本,则此行为甚至更容易- 只需调用[sheet setOpaque:NO]即可启用圆角。


要复制此行为非常容易。将您的窗口初始化为透明的无边框窗口:

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]];
将自定义视图添加为子视图:
[[self.sheet contentView] addSubview:[[IFWindowView alloc] initWithFrame:[[self.sheet contentView] frame]]];

自定义视图应按以下方式绘制:

#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];

这里有一些示例代码来演示其用法:http://d.pr/l9DB


1
注意:对于NSAlerts,您也可以使用上面的编辑。 [alert window] setOpaque:NO] 希望这能帮助到某些人! - Hunter Dolan

0
据我所知,这是窗口的一个属性。如果它是一个面板,则拥有方形的角落;如果是窗口,则有圆形的角落。至少在Mac OS下是这样 - 无法保证iOS。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接