OSS探訪GitHubでログイン

SwiftUI viewの背後にあるUIKit/AppKit componentへpublic APIでアクセスする

スコアの見方

OSS規模スコアはStars・Watchers・Forks・Contributorsを対数圧縮して重み付けした現在の規模指標(上限なし)です。発掘スコアは現在のOSS規模スコアから発掘時点のOSS規模スコアを引いた値、更新ペースは直近30日Commit数、成長モメンタムは直近の観測期間におけるOSS規模スコア差、OSS健全度は取得できた更新状況・Community Health・Releaseの0〜100評価です。

Stars
6,559
主要言語
Swift
ライセンス
MIT
リポジトリ最終更新
2026/10/06
ページ内ナビ

概要

SwiftUI IntrospectはSwiftUI viewが内部で利用するUIKit/AppKit componentを取得するlibraryです。ScrollViewからUIScrollView、TextFieldからUITextField等を見つけ、SwiftUIが公開していないpropertyやbehaviorを必要な範囲で調整できます。

特徴と向いている用途

公式資料に基づく紹介・実機未検証 · 内容確認日:

主な特徴

marker view間を探索して対応するUIKit/AppKit instanceを取得する

introspect modifierは対象SwiftUI viewの前後へmarkerを置き、その間のview hierarchyからUIScrollView等の対応instanceを探索します。private APIは使用せず、見つからない場合はcustomizationを実行しないdefensiveな設計です。

出典:[2]

OS versionを明示してunderlying implementationの変化を管理する

通常は.iOS(.v17, .v18, .v26, .v27)のように対象versionを列挙します。27.0.0では.iOS(.v13...)のrange-based predicateも公開されましたが、将来OSでunderlying typeが変わるとclosureが実行されない可能性があります。

出典:[2][4]

向いている用途

SwiftUI modifierでは届かないUIKit/AppKit customizationを限定的に補いたい場合に向く

ScrollViewのbounces、TextField背景、navigation bar等、SwiftUI native APIだけでは制御できない箇所を既存UIKit/AppKit propertyで調整したいapplicationに適します。

出典:[2]

導入前の確認

27.0.0はSwift tools 6.2・iOS 13+で、introspectionはnative SwiftUI APIがない場合に限定する

Package.swiftはSwift tools 6.2、iOS/Mac Catalyst 13、macOS 12、tvOS 13、visionOS 1以上を宣言します。READMEはnative SwiftUI modifierを優先し、introspection closureの複数回実行、OS差、retain cycleに注意するよう案内しています。

出典:[3][2][4]

参考にした公式資料

  1. [1]siteline/swiftui-introspect — GitHub repository(2026-10-06)
  2. [2]SwiftUI Introspect 27.0.0 — README(2026-10-06)
  3. [3]SwiftUI Introspect 27.0.0 — Package.swift(2026-10-06)
  4. [4]SwiftUI Introspect 27.0.0 release(2026-10-06)
  5. [5]SwiftUI Introspect MIT license(2026-10-06)
編集部からの補足

SwiftUI native modifierでは届かないUIKit/AppKit customizationを限定的に補いたい場合に向きます。OSごとのunderlying implementation差を前提に、version opt-inとdefensive codeを維持してください。

3ステップで試す

  1. 1

    SwiftUI Introspect 27.0.0をSwiftPMへ追加する

    27.xはSwift tools 6.2、iOS 13+が前提です。

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

    SwiftUIIntrospect productをtargetへ追加する

    SwiftUI viewからplatform componentへaccessするtargetへproductをlinkします。

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

    ScrollViewのUIScrollViewをcustomizeする

    public range predicateでiOS versionをopt-inし、underlying UIScrollViewのpropertyを変更します。

    import SwiftUIIntrospect ScrollView { Text("Item") } .introspect(.scrollView, on: .iOS(.v13...)) { scrollView in scrollView.bounces = false }
公式READMEで確認

成長

成長の推移 · 直近30日

6,559 Stars

推移データを蓄積中です。

開発アクティビティ

直近90日・週次

Commit(直近30日)
6
Open PR
1

開発アクティビティを蓄積中です。

Built with

カテゴリとタグ

GitHubデータ

GitHubのデータGitHubの詳細データを見る

GitHub Topics

  • appkit
  • inspect
  • inspection
  • introspection
  • nsview
  • nsviewcontroller
  • swiftui
  • uikit
  • uiview
  • uiviewcontroller
Stars
6,559
Forks
418
Watchers
55
Open Issues
15
Contributors
37
所有者種別
Organization
主要言語
Swift
ライセンス
MIT
リポジトリ最終更新
2026/10/06

このOSSの使い方や活用事例をMarkdownで投稿できます。管理者が承認した後に公開されます。

情報の誤りを報告

掲載内容に誤りや古い情報があればお知らせください。

このページを読んで、次に何をすればよいか分かりましたか?