2

我在我的应用程序中构建了一个半透明的浮动 HUD 窗口,它看起来像 Quick Look HUD 窗口,特别是使用进入/退出全屏图像。Cocoa 提供了 NSEnterFullScreenTemplate(和 NSExitFullScreenTemplate)模板,用于此目的,并且可以在有边框的按钮上正常工作。

一旦我移除边框并将按钮放在深色背景上,它就会保持深灰色,并且很难看到。我想让它变成白色,就像在 Quick Look 中一样。有没有内置的方法可以做到这一点,还是我必须自己对图像进行缩放和着色?

4

2 回答 2

5

我最终编写了一个 NSImage 类别类方法,该方法以所需的大小和所需的颜色返回模板图像(基本上是我自己做的,因为我不认为 API 确实提供了这样做的方法)。

+(NSImage *)templateImage:(NSString *)templateName
                withColor:(NSColor *)tint
                  andSize:(CGSize)targetSize
{
    NSImage *template = [NSImage imageNamed:templateName];
    NSSize size = (CGSizeEqualToSize(targetSize, CGSizeZero)
                   ? [template size]
                   : targetSize);
    NSRect imageBounds = NSMakeRect(0, 0, size.width, size.height);

    NSImage *copiedImage = [template copy];
    [copiedImage setTemplate:NO];
    [copiedImage setSize:size];

    [copiedImage lockFocus];

    [tint set];
    NSRectFillUsingOperation(imageBounds, NSCompositeSourceAtop);

    [copiedImage unlockFocus];

    return [copiedImage autorelease];
}
于 2011-06-09T11:50:43.780 回答
1
[NSCell setBackgroundStyle: NSBackgroundStyleDark]

NSBackgroundStyleDark

背景是深色。浅色内容与深色背景形成鲜明对比。

于 2011-07-15T18:56:51.487 回答