【问题标题】:Cocoa Mac Sheet Rounded Corners (Like Xcode 4)Cocoa Mac 表圆角(如 Xcode 4)
【发布时间】:2012-04-17 17:31:50
【问题描述】:

有谁知道如何制作如下图所示的圆角可可片?

Xcode 4 圆角表

我已经翻遍了,但我似乎找不到任何东西。我不确定我是否在寻找错误的地方,或者这不是一种常见的做法。有什么想法吗?

【问题讨论】:

  • 您是否尝试过查看 NSPanel 参考资料?
  • @CodaFi 这和NSPanel没有任何关系。
  • 在我的答案中添加了示例代码 - 只是想让您知道(发表评论会弹出通知 - 只是编辑我的答案不会)。
  • @Itai Ferber 非常感谢!一切正常!
  • 非常好,很高兴能帮上忙!

标签: objective-c macos cocoa


【解决方案1】:

据我所知,这是窗口的一个属性。如果是面板,它有方角,如果是窗口,则有圆角。至少在 Mac OS 下会发生这种情况——不能保证 iOS。

【讨论】:

    【解决方案2】:

    编辑:事实证明,如果您的目标是 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

    【讨论】:

    • 注意:对于 NSAlerts,您也可以使用上述编辑。 [alert window] setOpaque:NO]希望这对某人有帮助!
    猜你喜欢
    • 1970-01-01
    • 2011-07-28
    • 1970-01-01
    • 2015-08-23
    • 1970-01-01
    • 2017-11-12
    • 1970-01-01
    • 2011-11-07
    • 1970-01-01
    相关资源
    最近更新 更多