Кнопки HUD с использованием шаблонов изображений - PullRequest
2 голосов
/ 04 июня 2011

Я создаю полупрозрачное плавающее окно HUD в своем приложении, которое должно выглядеть как окно Quick Look HUD, особенно с использованием полноэкранного изображения Enter / Exit.Какао предоставляет шаблоны NSEnterFullScreenTemplate (и NSExitFullScreenTemplate), которые служат этой цели и отлично работают на ограниченных кнопках.

Как только я удаляю границу и помещаю кнопку на темном фоне, она остается темно-серойцвет, и это трудно увидеть.Я хотел бы сделать его белым, как в Quick Look.Есть ли встроенный способ сделать это, или я должен сам прибегнуть к масштабированию и раскрашиванию изображения?

Ответы [ 2 ]

5 голосов
/ 09 июня 2011

Я закончил тем, что написал метод класса категории 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];
}
1 голос
/ 15 июля 2011
[NSCell setBackgroundStyle: NSBackgroundStyleDark]

NSBackgroundStyleDark

Фон темного цвета. Содержимое света хорошо контрастирует с темным фоном.

...