Примените фоновый фильтр CIFilter, когда окно хоста будет прозрачно

Я хочу копировать фон Стопок прикрепления в режиме списка и сетке. Фон является полупрозрачным черным цветом с эффектом размытия:

Пример прикрепления складывает в режиме http://www.thecustommac.com/wp-content/uploads/2009/09/stack-highlight.jpg сетки

Проблема состоит в том, что [CALayer backgroundFilters] только относится к содержанию в окне, фильтры не применяются к содержанию в других окнах. Вот мой код:

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification 
{
    //make window transparent
    self.window.backgroundColor = [NSColor clearColor];
    [self.window setOpaque:NO];
    [self.window setHasShadow:NO];
    [self.window setStyleMask:NSBorderlessWindowMask];


    //make the content view layer hosting
    CALayer *rootLayer = [CALayer layer];
    [[self.window contentView] setLayer:rootLayer];
    [[self.window contentView] setWantsLayer:YES];


    //blur the background contents - NOT WORKING!
    [rootLayer setBackgroundColor:CGColorCreateGenericGray(0.0, .716)];

    CIFilter *blurFilter = [CIFilter filterWithName:@"CIGaussianBlur"];
    [blurFilter setDefaults];
    [rootLayer setBackgroundFilters:[NSArray arrayWithObject: blurFilter]];
}

Я не могу думать, как еще достигнуть этого эффекта. (Я смотрел на Display Services, чтобы видеть, существуют ли какие-либо полезные функции, но я не вижу никого.)

Какие-либо идеи?

5
задан Benedict Cohen 21 July 2010 в 11:02
поделиться