macos - 如何更改 Cocoa 应用程序的标题栏颜色?

标签 macos cocoa window

我需要在 OS X 中更改应用程序的标题栏颜色。我更喜欢涉及 Cocoa 或 Carbon 的解决方案,不过如果需要的话我可以做其他的事情。本质上,我的一个客户希望标题栏是黑色的,而不是灰色的。我知道这是可能的,因为 OS X 的提醒应用程序可以做到这一点,带有角色的 Firefox 和带有主题的 Google Chrome 也可以做到这一点。

我知道这有可能破坏用户体验,并且我考虑过其他选择,但这是客户想要的方式,也是我需要提供的方式。我不能真正使用无标题栏的窗口,因为窗口已经设计好了,我确信这比简单地更改窗口颜色更会破坏用户体验。

如有任何想法,我们将不胜感激。

最佳答案

看看Apple's Core Data Stickies sample app

1. Create borderless window.

- (id)initWithContentRect:(NSRect)contentRect 
                styleMask:(unsigned int)styleMask 
                  backing:(NSBackingStoreType)backingType 
                    defer:(BOOL)flag
{
    if (self = [super initWithContentRect:contentRect
                                styleMask:NSBorderlessWindowMask 
                                  backing:backingType 
                                    defer:flag]) {
        [self setBackgroundColor:[NSColor yellowColor]];
        [self setHasShadow:YES];
    }
    return self;
}

- (BOOL)canBecomeKeyWindow { return YES; }  

2. Place view on that window and implement custom title bar.

enter image description here
输出

enter image description here

关于macos - 如何更改 Cocoa 应用程序的标题栏颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15332066/

相关文章:

ios - 尝试使用 NSTimer 为 UILabel 提供脉冲效果,但计时器始终相互冲突

c - 获取Edge浏览器设置窗口的句柄

mysql - 加载文件中的数据 MySQL MacOS

macos - OS X 终端颜色

cocoa - NSView的addSubview方法本质上很慢吗? ( cocoa OSX)

cocoa - 以正确的格式显示 MAC 地址

ios - MKMapView 中的箭头图标

javascript - IP 名称和路径显示在窗口上

javascript - 将参数传递给 Window[callback] 函数

macos - Mac OS 类似于/dev/ttyUSBxx