为 SwiftUI 补充缺失功能的 Swift 包,提供额外视图、扩展及 UIKit/AppKit 组件的 SwiftUI 封装。
siteline/swiftui-introspect
一个 Swift 库,让 SwiftUI 视图能够访问底层的 UIKit 或 AppKit 视图并进行定制。
- Star
- 6,574
- Fork
- 420
- 未关闭 Issue
- 16
- 最近提交
- 上个月
这是什么?
SwiftUI 没有暴露底层 UIKit 和 AppKit 组件的许多属性。SwiftUI Introspect 通过在视图前后插入不可见的标记视图,并在两者之间的视图层级中查找对应的 UIKit 或 AppKit 实例(如 UIScrollView、NSTextField),把原生视图交给闭包处理,从而修改 SwiftUI 本身不提供的属性。
它覆盖了 List、ScrollView、Form、TextField、NavigationStack、TabView、Table,以及 sheet、popover 等多种控件。每个目标都需要指定平台版本(例如 .iOS(.v18)),因为底层视图类型可能随系统版本变化。库作者也可以使用范围式版本条件来覆盖未来系统版本。
项目声明不使用私有 API,也不做强制类型转换;找不到预期视图时,修饰符会被忽略。官方建议谨慎使用,能用原生 SwiftUI 修饰符解决的问题优先使用原生方案。
核心功能
- 01可访问众多 SwiftUI 控件底层的 UIKit 或 AppKit 视图。
- 02支持 iOS、tvOS、visionOS 和 macOS 平台。
- 03每个introspect目标需要显式指定系统版本,以保证可预测性。
- 04提供范围式版本条件,可覆盖未来的系统版本。
- 05支持自定义可 introspect 的视图类型,用于库未覆盖的元素。
适用场景
- 调整 SwiftUI List 或 ScrollView 的回弹行为和背景色。
- 在原生修饰符之外定制 TextField 或 SecureField 的外观。
- 设置 NavigationStack 或 NavigationView 的导航栏样式。
- 在 iOS 应用中保留原生 UIKit 视图的引用,以进行高级控制。
快速上手
- 1
将 SwiftUIIntrospect 包添加到 Swift Package Manager 依赖中
.package(url: "https://github.com/siteline/swiftui-introspect", from: "27.0.0"), - 2
将 SwiftUIIntrospect 产品添加到目标的依赖中
.product(name: "SwiftUIIntrospect", package: "swiftui-introspect"),
使用前须知
- 由于底层 UIKit/AppKit 类型可能在主要系统版本之间变化,每个系统版本都需要显式开启支持(例如 .iOS(.v18))。
- 仅支持 README 中列出的视图类型,许多 SwiftUI 视图(如 Text 和 Image)无法被内省。
收录于专题
标签
常见问题
- swiftui-introspect 是什么?
- 一个 Swift 库,让 SwiftUI 视图能够访问底层的 UIKit 或 AppKit 视图并进行定制。 SwiftUI 没有暴露底层 UIKit 和 AppKit 组件的许多属性。SwiftUI Introspect 通过在视图前后插入不可见的标记视图,并在两者之间的视图层级中查找对应的 UIKit 或 AppKit 实例(如 UIScrollView、NSTextField),把原生视图交给闭包处理,从而修改 SwiftUI 本身不提供的属性。
- swiftui-introspect 可以免费使用吗?用的什么许可证?
- swiftui-introspect 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
- swiftui-introspect 还在维护吗?
- 半年内有更新。swiftui-introspect 最近一次提交是在 2026年10月7日。
- swiftui-introspect 适合用来做什么?
- 调整 SwiftUI List 或 ScrollView 的回弹行为和背景色。 在原生修饰符之外定制 TextField 或 SecureField 的外观。 设置 NavigationStack 或 NavigationView 的导航栏样式。 在 iOS 应用中保留原生 UIKit 视图的引用,以进行高级控制。
- 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
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
8196+6 本周500SwiftMIT更新于 2个月前
一个用于构建 Apple 平台应用的 Swift 库,提供统一的状态管理、可组合的功能模块与便于测试的副作用处理。
1.5万+9 本周1684SwiftMIT更新于 前天
基于 URLSession 构建的 Swift HTTP 网络库,提供链式请求、参数编码、上传下载与响应校验。
4.2万+1 本周7645SwiftMIT更新于 6天前
为 macOS 应用添加用户可自定义全局快捷键的 Swift 包,内置快捷键录制界面。
2736+7 本周253SwiftMIT更新于 2个月前