Разработчик Жоан Поццобон (João Pozzobon) выпустил библиотеку Glur, позволяющую использовать в SwiftUI-блюр на шейдерах Metal в своих проектах. Автор отмечает, что это эффект, который Apple использует в собственных приложениях.
В репозитории Glur отмечается, что библиотека использует реализацию размытия на шейдерах Metal. Поэтому эффект будет нормально отображаться только на устройствах под управлением iOS 17.0, macOS 14.0, tvOS 17.0 и более поздних. Библиотека совместима и с более ранними версиями операционных систем, но результат может быть хуже. Разработчикам следует проверять работу Glur перед использованием в продакшене. На watchOS по умолчанию нет поддержки Metal.
Эффект можно добавить с помощью модификатора .glur(). В качестве дополнительных параметров можно указать значения радиуса, интерполяции и смещения. Кроме того, есть возможность выбрать направление размытия. Разработчик отмечает, что в симуляторе Xcode эффекты могут не отображаться, но на физическом устройстве таких проблем нет.
.glur(radius: 8.0, // The full radius of the blur once it has interpolated offset: 0.3, // The offset until the blur starts being applied, relative to the size of the view interpolation: 0.4, // The interpolation until the blur reaches its full radius, relative to the size of the view direction: .down // The direction of the blur )
Код Glur открыт и опубликован на GitHub. В репозитории доступен демонстрационный проект, который можно запустить на собственном устройстве или в симуляторе.
Источник: habr.com