Подтвердить что ты не робот

Как добавить размытый вид на столе?

У меня есть NSTableView, который перезагружается. В то время как новые данные загружаются, я хочу добавить subview ontop этого с помощью счетчика. Я бы хотел, чтобы представление было полупрозрачным и отображало вид под ним, чтобы быть размытым. Как я могу это сделать?

4b9b3361

Ответ 1

Самое простое решение - значительно больше, чем -bitmapImageRepEtc:, и более применимое к Mac OS, чем метод масштаба растеризации - заключается в том, чтобы наложить наложение на слой с поддержкой Core Animation, а затем дать этому слою Core Фильтр размытия изображения. Это техника, используемая во всем Mac OS, от меню Dock до самой панели меню. Интерфейс Builder упрощает настройку, но вы также можете сделать это в коде:

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

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

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

Ответ 2

Вы должны проверить RMBlurredView на guthub: https://github.com/raffael/RMBlurredView

Это простой в использовании подкласс NSView, который делает все, что для вас. Обязательно установите setWantsLayer:YES в своем родительском представлении!

Подробнее см. статью Кокоанетика: http://www.cocoanetics.com/2013/10/blurring-views-on-mac/

Ответ 3

Основной способ заключается в том, чтобы привязать изображение вашего представления, используя что-то вроде метода ‑bitmapImageRepForCachingDisplayInRect: NSView, обработав это изображение, чтобы оно было размытым (Core Image - ваш друг здесь), а затем наложите свой вид на a NSImageView, содержащее размытое изображение.

Это, конечно, фальшивка, но то, что демонстрирует: -)

Ответ 4

Вы пытались изменить атрибут Alpha для представления (для прозрачности)? Также здесь ссылка на размытие представления: Эффект Blur для UIView