我正在我的应用程序中构建一个半透明的浮动HUD窗口,它看起来像Quick Look HUD窗口,特别是使用Enter / Exit全屏图像。 Cocoa提供NSEnterFullScreenTemplate(和NSExitFullScreenTemplate)模板,用于此目的,并在边框按钮上正常工作。
一旦我移除边框并将按钮放在深色背景上,它就会保持深灰色,并且难以看清。我想把它变成白色,就像在Quick Look中一样。有没有内置的方法来做到这一点,或者我是否必须自己使用缩放和着色图像?
答案 0 :(得分:5)
我最终编写了一个NSImage类别类方法,该方法返回所需大小和所需颜色的模板图像(基本上是自己做的,因为我不认为API确实提供了这样做的方法)。 / p>
+(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];
}
答案 1 :(得分:1)
[NSCell setBackgroundStyle: NSBackgroundStyleDark]
NSBackgroundStyleDark
背景为深色。 光线内容与深色背景形成鲜明对比。