Я работаю над приложением iOS 11 на основе карт и хочу, чтобы строка состояния была размыта в точности так, как это выглядит на картах Apple.
Вот как это выглядит в приложении Карты:
В настоящее время я использую UIVisualEffectView для репликации этого эффекта. Вот мой код:
let blurEffect = UIBlurEffect(style: .regular)
blurredStatusBar = UIVisualEffectView(effect: blurEffect)
blurredStatusBar?.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(blurredStatusBar!)
Однако, какой бы UIBlurEffect я не использовал, я не могу воспроизвести эффект, как приложение «Карты». Вот как это выглядит для различных эффектов:
.regular
.prominent
.light
.extraLight
Я просто хочу размыть строку состояния, не добавляя насыщенности, вибрации или какого-либо оттенка белого цвета.
Существует свойство экземпляра - backgroundFilters , которое, возможно, могло бы помочь мне, но, к сожалению, оно недоступно для слоев на iOS.
Одно из возможных решений, предложенных здесь , - захват содержимого UIView внутри изображения, затем размытие и отображение. Однако в моем случае это нереальное решение, потому что под строкой состояния есть карта, которую можно панорамировать. Нет смысла непрерывно захватывать нижнюю карту как изображение и размыть ее во время панорамирования карты.
Я пытался использовать ILTranslucentView , который является небольшим подклассом UIView, который обеспечивает естественный эффект размытия (полупрозрачный) для iOS 7+.
Вот как это выглядело:
Я пробовал несколько разных подходов, таких как this , но безрезультатно.