Skip to content

iOSAlertLibrary — это библиотека для отображения уведомлений на базе SwiftUI, которая может работать на любом экране.

Notifications You must be signed in to change notification settings

MickeyRU/AlertsLibrary

Repository files navigation

README_en.md

iOSAlertLibrary

iOSAlertLibrary — это библиотека для отображения уведомлений на базе SwiftUI, которая может работать на любом экране.

Тосты Динамический остров Алерты

Возможности

  • ✅ Готовый набор уведомлений с различным дизайном и конфигурациями.
  • ✅ Toast-уведомления с возможностью изменения размера по тапу.
  • ✅ Уведомления для Dynamic Island.
  • ✅ Предустановленные анимации с настраиваемыми параметрами.
  • ✅ Поддержка пользовательского UI для уведомлений.
  • ✅ Набор жестов (свайпы в четырех направлениях, тапы).
  • ✅ Отображение уведомлений поверх любого экрана.
  • ✅ Полная адаптация к темной теме.
  • ✅ Поддержка поворота экрана.
  • ✅ Доступна в SPM (Swift Package Manager).
  • ✅ Наличие UI-тестов для проверки функциональности.

Настройте уведомление под себя!

Библиотека предоставляет удобный интерфейс для создания и показа уведомлений. Вы можете использовать готовые шаблоны уведомлений или подключить собственный пользовательский интерфейс.

// Создание экземпляра библиотеки
let iosAlertlibrary = iOSAlertLibary()

// Создание уникального ID для уведомления
let id = UUID().uuidString

// Настройка конфигурации уведомления
let alertConfig = AlertConfig(
    icon: "trash.fill",
    lightModeIconColor: .blue,
    darkModeIconColor: .blue.opacity(0.8),
    title: "Хранилище заполнено!",
    lightModeTitleColor: .black,
    darkModeTitleColor: .white,
    message: """
             В вашем облаке закончилось место. Вы больше не можете сохранять данные. \
             Удалите ненужные файлы или обновите тарифный план.
             """,
    lightModeMessageColor: .gray,
    darkModeMessageColor: .gray,
    lightModeBackgroundColor: .white,
    darkModeBackgroundColor: Color(white: 0.15),
    dismissAction: { [weak self] in self?.iosAlertlibrary.dismissAlert(id: id) },
    cancelButtonConfig: nil,
    continueButtonConfig: AlertButtonConfig(
        title: "Обновить тариф",
        action: { print("Тариф обновлен") },
        lightModeTitleColor: .white,
        darkModeTitleColor: .white,
        lightModeBackgroundColor: .blue,
        darkModeBackgroundColor: .blue
    )
)


// Создание уведомления (вью)
let alert = AlertView(config: alertConfig)

// Настройка контейнера уведомления
let containerConfig = ContainerConfig(
    id: id,
    duration: 3,
    position: .top,
    gestures: [.swipe(direction: [.up], threshold: 20)],
    animationType: .slide,
    animationConfig: AnimationConfig(
        offset: (x: (start: -50, end: 0), y: (start: 0, end: 0)),
        opacity: (start: 0, end: 1),
        scaleEffect: (from: 1, anchor: .center)
    )
)

// Создание контейнера уведомления
let container = BasicContainerView(content: alert, containerConfig: containerConfig)

// Показ уведомления на экране
iosAlertlibrary.showAlert(container: container, useOverlayWindow: false)

// Принудительное скрытие уведомления
iosAlertlibrary.dismissAlert(id: id)

Компоненты Библиотеки

Архитектура библиотеки разделена на модули, что позволяет использовать только необходимую часть функционала.

  • Alerts UI presets - Набор готовых шаблонов уведомлений.
  • BasicContainerView - Промежуточная обертка над UI-элементом (View), позволяющая настраивать жесты и анимации, реализующая протокол ContainerViewProtocol.
  • AlertPresentationManager - Менеджер, отвечающий за показ контейнеров (View, реализующих протокол ContainerViewProtocol) на экране и управление их жизненным циклом.

Требования

Платформы
iOS 16.0+

Авторы

About

iOSAlertLibrary — это библиотека для отображения уведомлений на базе SwiftUI, которая может работать на любом экране.

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages