SwiftUIに不足している機能を、UIKitやAppKitの機能を活用したビュー、拡張、ラッパーで補うSwiftパッケージです。
siteline/swiftui-introspect
SwiftUIのコードから背後にあるUIKitまたはAppKitのビューにアクセスし、カスタマイズできるSwiftライブラリ。
- スター
- 6,574
- フォーク
- 420
- 未解決の Issue
- 16
- 最終コミット
- 先月
これは何?
SwiftUIでは、背後にあるUIKitやAppKitのコンポーネントのプロパティが公開されていないことが多くあります。SwiftUI Introspectは、SwiftUIビューの周囲に不可視のマーカービューを追加し、その間のビュー階層を検索して、UIScrollViewやNSTextFieldなど対応するUIKitまたはAppKitのインスタンスを見つけることで、このギャップを埋めます。クロージャにはそのネイティブビューが渡されるため、SwiftUIでは提供されていないプロパティを変更できます。
List、ScrollView、Form、TextField、NavigationStack、TabView、Tableのほか、シートやポップオーバーなど、幅広いコントロールに対応しています。OSのリリースによって内部のビュー型が変わる可能性があるため、イントロスペクション対象ごとに.iOS(.v18)のようなプラットフォームバージョンを明示する必要があります。将来のバージョンもサポートしたいライブラリ作者向けに、範囲ベースのバージョン判定も用意されています。
このプロジェクトは、private APIを使用せず、ビューを強制キャストしないと説明しています。想定したビューが見つからない場合、モディファイアは無視されます。また、ネイティブのSwiftUIモディファイアが利用できる場合はそちらを優先し、このライブラリは必要最小限に使うようドキュメントで推奨しています。
主な機能
- 01多くのSwiftUIコントロールの背後にあるUIKitまたはAppKitのビューにアクセスできる。
- 02iOS、tvOS、visionOS、macOSを対象とする。
- 03イントロスペクション対象ごとに、明示的なOSバージョンの指定が必要。
- 04将来のプラットフォームバージョンに対応する範囲ベースのバージョン判定を提供する。
- 05未対応の要素に対して、開発者がカスタムのイントロスペクション可能なビュー型を定義できる。
ユースケース
- SwiftUIのListやScrollViewのバウンス動作や背景を変更する。
- SwiftUIのモディファイアだけでは難しいTextFieldやSecureFieldの外観をカスタマイズする。
- NavigationStackやNavigationViewのナビゲーションバーをスタイリングする。
- iOSアプリで高度な制御を行うため、ネイティブのUIKitビューへの参照を保持する。
クイックスタート
- 1
Swift Package Managerの依存関係にSwiftUIIntrospectパッケージを追加します
.package(url: "https://github.com/siteline/swiftui-introspect", from: "27.0.0"), - 2
ターゲットの依存関係にSwiftUIIntrospectプロダクトを追加します
.product(name: "SwiftUIIntrospect", package: "swiftui-introspect"),
使う前に知っておきたいこと
- 基盤となるUIKit/AppKitの型はメジャーバージョン間で変更される可能性があるため、イントロスペクションを利用するには各OSバージョン(例:.iOS(.v18))を個別にオプトインする必要があります。
- サポートされるのはREADMEに記載されたビュー型のみです。TextやImageなど、多くのSwiftUIビューはイントロスペクションできません。
収録されている特集
トピック
よくある質問
- swiftui-introspect とは?
- SwiftUIのコードから背後にあるUIKitまたはAppKitのビューにアクセスし、カスタマイズできるSwiftライブラリ。 SwiftUIでは、背後にあるUIKitやAppKitのコンポーネントのプロパティが公開されていないことが多くあります。SwiftUI Introspectは、SwiftUIビューの周囲に不可視のマーカービューを追加し、その間のビュー階層を検索して、UIScrollViewやNSTextFieldなど対応するUIKitまたはAppKitのインスタンスを見つけることで、このギャップを埋めます。クロージャにはそのネイティブビューが渡されるため、SwiftUIでは提供されていないプロパティを変更できます。
- swiftui-introspect は無料で使えますか?ライセンスは?
- swiftui-introspect は MIT ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
- swiftui-introspect は今もメンテナンスされていますか?
- 半年以内に更新あり。swiftui-introspect の最終コミットは 2026年10月7日 です。
- swiftui-introspect は何に使えますか?
- SwiftUIのListやScrollViewのバウンス動作や背景を変更する。 SwiftUIのモディファイアだけでは難しいTextFieldやSecureFieldの外観をカスタマイズする。 NavigationStackやNavigationViewのナビゲーションバーをスタイリングする。 iOSアプリで高度な制御を行うため、ネイティブのUIKitビューへの参照を保持する。
- swiftui-introspect のインストール方法は?
- Swift Package Managerの依存関係にSwiftUIIntrospectパッケージを追加します: .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 をもとに AI が生成しています。GitHub の数値は毎日更新されます。
関連プロジェクト
標準ライブラリ、Foundation、UIKit/AppKitの型に便利なメソッドを追加する、500以上のネイティブSwift拡張のコレクション。
状態管理の一貫性、機能の合成、副作用の制御、充実したテスト支援を備えた、Appleプラットフォーム向けアプリ構築用Swiftライブラリ。
URLSessionを基盤とするSwift向けの洗練されたHTTPネットワークライブラリ。チェーン可能なリクエスト、エンコード、アップロード、ダウンロード、レスポンス検証に対応。
macOSアプリに、ユーザーがカスタマイズできるグローバルキーボードショートカットと、すぐに使える録画UIを追加できるSwiftパッケージです。