Repolode
siteline

siteline/swiftui-introspect

Библиотека Swift, позволяющая SwiftUI-коду обращаться к лежащему в основе представления SwiftUI объекту UIKit или AppKit и настраивать его.

Звёзды
6,574
Форки
420
Открытые issues
16
Последний коммит
в прошлом месяце

Что это?

SwiftUI не предоставляет доступ ко многим свойствам лежащих в основе компонентов UIKit и AppKit. SwiftUI Introspect восполняет этот пробел: библиотека добавляет вокруг представления SwiftUI невидимые маркеры, а затем ищет в иерархии представлений между ними соответствующий экземпляр UIKit или AppKit, например UIScrollView или NSTextField. В замыкающую функцию передаётся это нативное представление, чтобы можно было изменить свойства, недоступные в SwiftUI.

Библиотека поддерживает множество элементов управления, включая List, ScrollView, Form, TextField, NavigationStack, TabView, Table, а также листы и всплывающие окна. Для каждой цели интроспекции нужно явно указать версию платформы, например .iOS(.v18), поскольку типы лежащих в основе представлений могут меняться между выпусками ОС. Авторам библиотек доступны предикаты с диапазонами версий, позволяющие учесть будущие версии.

В проекте указано, что библиотека не использует приватные API и не приводит типы представлений принудительно; если ожидаемое представление не найдено, модификатор игнорируется. В документации рекомендуется использовать библиотеку умеренно и отдавать предпочтение нативным модификаторам SwiftUI, если они доступны.

Ключевые возможности

  • 01Предоставляет доступ к лежащим в основе многих элементов управления SwiftUI представлениям UIKit или AppKit.
  • 02Поддерживает целевые платформы iOS, tvOS, visionOS и macOS.
  • 03Для каждой цели интроспекции требует явно указать версию ОС.
  • 04Предоставляет предикаты с диапазонами версий для будущих версий платформ.
  • 05Позволяет разработчикам задавать собственные типы представлений для интроспекции, в том числе для неподдерживаемых элементов.

Сценарии использования

  • Изменение поведения при отскоке или фона у List либо ScrollView в SwiftUI.
  • Настройка внешнего вида TextField или SecureField за пределами возможностей модификаторов SwiftUI.
  • Настройка панели навигации в NavigationStack или NavigationView.
  • Сохранение ссылки на нативное представление UIKit для более тонкого управления в приложении для iOS.

Быстрый старт

  1. 1

    Добавьте пакет SwiftUIIntrospect в зависимости Swift Package Manager

    .package(url: "https://github.com/siteline/swiftui-introspect", from: "27.0.0"),
  2. 2

    Добавьте продукт SwiftUIIntrospect в зависимости целевого модуля

    .product(name: "SwiftUIIntrospect", package: "swiftui-introspect"),

Что важно знать

  • Для интроспекции необходимо явно включить каждую версию ОС (например, .iOS(.v18)), поскольку базовые типы UIKit/AppKit могут меняться между основными версиями.
  • Поддерживаются только типы представлений, перечисленные в README. Многие представления SwiftUI, например Text и Image, нельзя интроспектировать.

В подборках

Темы

#swiftui#uikit#appkit#ios#macos#swift-package-manager#ui-customization#inspect#inspection#introspection

Частые вопросы

Что такое swiftui-introspect?
Библиотека Swift, позволяющая SwiftUI-коду обращаться к лежащему в основе представления SwiftUI объекту UIKit или AppKit и настраивать его. SwiftUI не предоставляет доступ ко многим свойствам лежащих в основе компонентов UIKit и AppKit. SwiftUI Introspect восполняет этот пробел: библиотека добавляет вокруг представления SwiftUI невидимые маркеры, а затем ищет в иерархии представлений между ними соответствующий экземпляр UIKit или AppKit, например UIScrollView или NSTextField. В замыкающую функцию передаётся это нативное представление, чтобы можно было изменить свойства, недоступные в SwiftUI.
swiftui-introspect можно использовать бесплатно? Какая у него лицензия?
swiftui-introspect распространяется с открытым исходным кодом под лицензией MIT. Перед использованием в коммерческих продуктах проверьте условия лицензии.
swiftui-introspect всё ещё поддерживается?
Обновлялся за последние 6 месяцев. Последний коммит в swiftui-introspect — 7 окт. 2026 г..
Для чего можно использовать swiftui-introspect?
Изменение поведения при отскоке или фона у List либо ScrollView в SwiftUI. Настройка внешнего вида TextField или SecureField за пределами возможностей модификаторов SwiftUI. Настройка панели навигации в NavigationStack или NavigationView. Сохранение ссылки на нативное представление UIKit для более тонкого управления в приложении для iOS.
Как установить swiftui-introspect?
Добавьте пакет SwiftUIIntrospect в зависимости Swift Package Manager: .package(url: "https://github.com/siteline/swiftui-introspect", from: "27.0.0"), Добавьте продукт SwiftUIIntrospect в зависимости целевого модуля: .product(name: "SwiftUIIntrospect", package: "swiftui-introspect"),
Где скачать swiftui-introspect?
Исходный код и инструкции по установке — на GitHub: https://github.com/siteline/swiftui-introspect

Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.

Похожие проекты

Библиотека Swift для разработки приложений на платформах Apple с согласованным управлением состоянием, композиционными функциями, контролем побочных эффектов и широкими возможностями тестирования.

15 тыс.+4 за неделю1,7 тыс.SwiftMITОбновлён 3 дня назад