Cocoa Размытый фон NSView

Я знаю, что можно создавать прозрачные окна в Cocoa, хотя можно ли размыть все, что стоит за ним? Я знаю, что были подобные вопросы, но они больше размывают то, что находится внутри реального NSView, а не то, что стоит за ним. Возможно ли это, и если да, какой метод мне понадобится для изучения?

PossibleImpossible?

Possible                      Impossible?

Ответ 1

Чтобы ответить вам, да, это возможно.

Если вы хотите этого эффекта, ознакомьтесь с этим проектом GitHub, который я создал. Я подклассифицировал NSWindow, чтобы отключить непрозрачность, а затем добавил фильтр фона: гауссовское размытие в NSView с помощью средства просмотра эффектов, расположенного на боковой панели утилит Xcode (вы можете изменить значение radius для более или менее эффект размытия).

Если вы хотите новый эффект Yosemite View, посмотрите новый класс, который они выпустили NSVisualEffectView, просто подкласс NSView, который вы хотите для использования этого эффекта.

Надеюсь, что вы найдете мой ответ полезным.

С уважением,

Ответ 2

Мой вклад, поскольку я хотел установить радиус и цвет.

Выполнение этого в пользовательском представлении, чтобы размыть то, что позади. НТН

view.wantsLayer = true
view.layerUsesCoreImageFilters = true
view.layer?.backgroundColor = NSColor(red: 0.2, green: 0.2, blue: 0.2, alpha: 0.5).CGColor

let blurFilter = CIFilter(name: "CIGaussianBlur")
blurFilter?.setDefaults()
blurFilter?.setValue(2.5, forKey: kCIInputRadiusKey)
view.layer?.backgroundFilters?.append(blurFilter!)