2011-03-09 18 views

Odpowiedz

18

Najprostszym rozwiązaniem, znacznie bardziej niż -bitmapImageRepEtc: jednej, a bardziej zastosowanie do Mac OS niż rasteryzacji skalę metoda-IS aby ustawić widok nakładki na warstwę podkładu Core Animation, a następnie nadaj tej warstwie filtr rozmycia obrazu rdzenia. Jest to technika używana w całym systemie Mac OS, od menu Docku po pasek menu. Interfejs Builder umożliwia trywialnie łatwe w konfiguracji, ale można to zrobić w kodzie, a także, jak to:

CALayer *backgroundLayer = [CALayer layer]; 
[backgroundView setLayer:backgroundLayer]; 
[backgroundView setWantsLayer:YES]; 

CIFilter *blurFilter = [CIFilter filterWithName:@"CIGaussianBlur"]; 
[blurFilter setDefaults]; 

[backgroundView layer].backgroundFilters = [NSArray arrayWithObject:blurFilter]; 
+3

Wygląda na to, że działa tylko wtedy, gdy widok całkowicie pokrywa inne widoki, które znajdują się pod nim. Gdy pokrywa je tylko częściowo, cały obszar pod widokiem jest niewyraźny. – adib

+0

Przepraszam za przywrócenie tego z martwych - z jakich ram (-ów) zależy "setLayer"? – capikaw

+3

Core Animation: QuartzCore.framework –

-3

Czy próbowałeś zmienić atrybut Alpha dla widoku (dla przezroczystości)? Również tutaj jest link na zacieranie widok: Blur Effect for UIView

+1

wolałbym nazwać piksele niż rozmazane. – Konrad77

2

Technika podstawowa byłoby przystawki obraz widoku, za pomocą czegoś podobnego sposobie NSView‑bitmapImageRepForCachingDisplayInRect:, przetwarzanie, że obraz, aby go niewyraźne (Core Obraz jest twój przyjaciel tutaj), a następnie nałożyć swój widok na NSImageView zawierający niewyraźne zdjęcie.

To jest oszustwo, oczywiście, ale to, co jest o showmanship :-)

Powiązane problemy