Mam NSTableView, który zostanie ponownie załadowany. Podczas ładowania nowych danych chcę dodać jego podgląd za pomocą spinnera. Chciałbym, aby widok był półprzezroczysty i odsłonił widok, który byłby niewyraźny. Jak miałbym to zrobić?Jak dodać niewyraźne wyświetlenie widoku z widoku?
Odpowiedz
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];
Czy próbowałeś zmienić atrybut Alpha dla widoku (dla przezroczystości)? Również tutaj jest link na zacieranie widok: Blur Effect for UIView
wolałbym nazwać piksele niż rozmazane. – Konrad77
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 :-)
Powinieneś sprawdzić RMBlurredView
na guthub: https://github.com/raffael/RMBlurredView
Jest to łatwy w użyciu podklasy NSView, który robi to wszystko dla ciebie. Pamiętaj, aby ustawić setWantsLayer:YES
w widoku rodzica!
uzyskać szczegółowe informacje, zobacz artykuł Cocoanetics: http://www.cocoanetics.com/2013/10/blurring-views-on-mac/
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
Przepraszam za przywrócenie tego z martwych - z jakich ram (-ów) zależy "setLayer"? – capikaw
Core Animation: QuartzCore.framework –