Jak dodać niewyraźny widok na szczycie widoku?

Mam NSTableView, który jest przeładowywany. Podczas wczytywania nowych danych chcę dodać na jego szczycie subview za pomocą spinnera. Chciałbym, aby Widok na szczycie był półprzezroczysty i odsłaniał widok pod nim, aby był zamazany. Jak miałbym to zrobić?

Author: Sheehan Alam, 2011-03-09

4 answers

Najprostszym rozwiązaniem-znacznie bardziej niż metoda -bitmapImageRepEtc: i bardziej odpowiednia dla systemu Mac OS niż metoda skalowania rasteryzacji-jest ustawienie widoku Nakładki na warstwę podkładową animacji rdzenia, a następnie nadanie tej warstwie filtru rozmycia obrazu rdzenia. Jest to technika używana w całym systemie Mac OS, od menu stacji dokującej do samego paska menu. Interface Builder sprawia, że konfiguracja jest banalnie prosta, ale możesz to zrobić również w kodzie, 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];
 18
Author: Noah Witherspoon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-10 00:50:18

Powinieneś sprawdzić RMBlurredView Na guthub: https://github.com/raffael/RMBlurredView

Jest to łatwa w użyciu podklasa NSView, która robi to wszystko za Ciebie. Pamiętaj, aby ustawić setWantsLayer:YES w widoku rodzica!

Szczegóły znajdziesz w artykule Cocoanetics: http://www.cocoanetics.com/2013/10/blurring-views-on-mac/

 3
Author: Raffael,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-25 10:26:33

Podstawową techniką byłoby przyciągnięcie obrazu widoku, używając czegoś takiego jak ‑bitmapImageRepForCachingDisplayInRect: metoda NSView, przetworzenie tego obrazu w celu jego zamazania (Core Image to twój przyjaciel tutaj), a następnie nałożenie widoku na NSImageView zawierające zamazany obraz.

To jest fakery, oczywiście, ale o to chodzi w showmansie: -)

 2
Author: Rob Keniger,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-10 00:22:10

Próbowałeś zmienić atrybut alfa dla widoku (dla przezroczystości)? Również tutaj jest link na rozmycie widoku: efekt rozmycia dla UIView

 -3
Author: NMS,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-09 18:57:05