Vladimir Buikliskii

Vladimir Buikliskii 

iOS разработчик, автор ТГ канала @swiftynew

92subscribers

27posts

goals4
18 of 30 paid subscribers
Наберу 30 подписчиков и начну разбирать алгоритмы
1 of 3
$4.27 of $427 raised
Сбор на верстку и выпуск книги "100 вопросов для iOS-разработчика". Средства пойдут на профессиональную верстку книги и ее последующий выпуск.

Реализация размытия при многозадачности в SwiftUI

https://www.createwithswift.com/implement-blurring-when-multitasking-in-swiftui/
Улучшение конфиденциальности пользователей является важной частью разработки современных приложений. В этом руководстве рассказывается, как создать приложение SwiftUI, которое автоматически размывает экран при переходе в режим многозадачности или в фоновый режим, что является полезной функцией для защиты конфиденциальной информации.
Мы рассмотрим, как реализовать этот подход с использованием примера, в котором «секреты» разработчика размываются, когда приложение не активно. Следуя пошаговому руководству, вы научитесь применять эту технику конфиденциальности в своих приложениях SwiftUI.
Перед тем, как начать
Прежде чем начать, убедитесь, что у вас есть базовые знания Swift и SwiftUI, особенно в области управления сценами и фазами сцен. Если вы не знакомы с этими концепциями, рекомендуется ознакомиться с документацией Apple по SwiftUI.
Документация Apple по сценам
Декларация групп пользовательских интерфейсов, составляющих части вашего приложения.
Настройка проекта
Для демонстрации размытия экрана мы используем простое приложение под названием My Secrets, которое скрывает конфиденциальную информацию, когда приложение переходит в фоновый режим.
В качестве отправной точки создайте список секретов, который будет храниться локально для отображения в нашем пользовательском интерфейсе.
class SecretsStore {
static var secrets: [String] = [
"Я все еще люблю **UIKit**.",
"Меню-гамбургеры меня коробят.",
"Я верю в **Human Interface Guidelines**.",
"Я тайно наслаждаюсь написанием документации.",
"Я считаю, что каждая ошибка — это просто недопонимание функции.",
"Я всегда ищу лучший способ сделать вещи.",
"У меня есть любимая тема в Xcode, и это не темная..."
]
}
Затем обновите ContentView, чтобы отображать простой стилизованный список элементов из массива секретов в SecretsStore.
struct ContentView: View {
    var body: some View {
        List(SecretsStore.secrets, id: \.self) { secret in
           Text(.init(secret))
                .listRowSeparator(.hidden)
                .fontDesign(.monospaced)
        }
         .listStyle(.inset)
         .navigationTitle("Мои секреты")
    }
}
Цель приложения — автоматически размывать его содержимое при переходе в режим многозадачности или при его неактивности. Вот как мы можем реализовать эту функциональность.
Размытие представления
В файле ContentView.swift приложение будет отслеживать состояние сцены с использованием @Environment(\.scenePhase), чтобы обнаружить, когда оно становится неактивным или переходит в фоновый режим. В зависимости от текущего состояния сцены будет изменяться значение радиуса размытия, применяемого к содержимому представления.
Затем, с помощью модификатора blur(radius:opaque:), применяем эффект размытия к содержимому представления.
Когда пользователь переключается на другое приложение или возвращается на главный экран, конфиденциальное содержимое в вашем приложении становится размытым, скрывая его от посторонних глаз. Это гарантирует, что отображаемая информация останется защищенной, когда приложение не активно.
Когда пользователь возвращается в ваше приложение, эффект размытия плавно удаляется, и содержимое снова становится видимым без резких переходов.
Расширение функции
В то время как в предыдущем примере фокус был на одном представлении, вы можете расширить функциональность размытия на все приложение, интегрируя подобную логику в основной делегат сцены вашего приложения или выше в иерархии представлений. Это гарантирует, что все конфиденциальные данные будут защищены, когда приложение переходит между состояниями.
Создание контейнера
Другой подход — создать контейнер представления, который будет отслеживать текущее состояние приложения и применять эффект размытия к своему содержимому. Это может быть полезно, если вы хотите наложить изображение на контент, например, логотип вашего приложения, или если нужно размыть только определенные представления.
Та же логика может быть использована для создания кастомного модификатора.
Subscription levels3

Базовый уровень

$1.41 per month
Подписавшись на базовый уровень, вы получите:
1) Доступ к переводу популярных статей на тему iOS-разработки.

Стандартный уровень

$5.6 per month
Подписавшись на стандартный уровень, вы получите:
1) Доступ к переводу официальной документации Swift(Notion).
2) Доступ к переводу популярных статей на тему iOS-разработки.
3) Подробный список библиотек с инструкциями по их настройке для удобной работы с проектами(Notion -  https://www.notion.so/).
4) Вопросы и ответы из реальных собеседований.
5) Ранний доступ к онлайн-версии книги "100 вопросов для iOS-разработчика" до официального релиза.(Сечйас  доступен черновик)
6) Доступ к закрытому чату.

Продвинутый уровень(Менторство)

$72 per month
Подписавшись на продвинутый уровень, вы получите:
1. Все материалы и преимущества стандартного уровня.
2.  4 часа личных консультаций в месяц (онлайн-созвон или разбор кода/проектов).
Go up