【问题标题】:Cocoa HUD Window: remove transparency?Cocoa HUD Window:移除透明度?
【发布时间】:2010-11-15 23:15:39
【问题描述】:

我有一个标准的 NSPanel 设置为 HUD 样式。我想更改背景颜色,主要是因为我想要一个工具栏,但看不到任何使标准 nstoolbar 在 HUD 上看起来不错的方法,也没有直接自定义工具栏背景的方法。

我了解创建完全自定义窗口的多种方法,并在其他情况下使用这些方法。在这种情况下,我想要一个窗口提供的所有好东西,但我只是不想要透明度。有趣的是,我可以更改背景颜色,但不能更改 alpha。设置 alpha 值对窗口没有影响。

以前有人解决过这个问题吗?

【问题讨论】:

    标签: cocoa hud nstoolbar


    【解决方案1】:

    将面板的内容视图(只需在面板内单击以选择它,而不是标题栏)子类为SGPanelView 并使用您的类的drawRect 方法的此实现使SGPanelView:SGPanelView,一个子类NSView:

    - drawRect:(NSRect)dirtyrect {
      [[NSColor blackColor] set];
      [NSBezierPath fillRect:[self bounds]];
    }
    

    应该可以。如果不起作用,请尝试将bounds 更改为frame


    更多信息请参见http://developer.apple.com/library/mac/#documentation/cocoa/reference/ApplicationKit/Classes/NSView_Class/Reference/NSView.html

    【讨论】:

    • 不行——工具栏实际上不是 contentView 绘图的一部分。工具栏直接绘制在窗口的背景上,而不是内容视图。
    • 使用[[window contentView] superView] 获取窗口视图。请注意,您必须更改矩形,因为它包含标题栏。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 2013-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多