# TLiOS26LiquidGlassDemo **Repository Path**: leecj/TLiOS26LiquidGlassDemo ## Basic Information - **Project Name**: TLiOS26LiquidGlassDemo - **Description**: 本文针对iOS26的新技术展开分析,重点研究了苹果6月发布的Liquid Glass(液态玻璃)特性及其适配期限(WWDC视频中有详细说明)。旨在帮助公司iOS项目提前做好适配准备,充分兼容iOS26的新功能。 - **Primary Language**: Swift - **License**: Apache-2.0 - **Default Branch**: dev/1.0.0 - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-12 - **Last Updated**: 2025-07-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # TLiOS26LiquidGlassDemo 本项目旨在深入研究并实践 **iOS 26** 中引入的新特性,特别是苹果在 WWDC 上发布的 **Liquid Glass(液态玻璃)** 效果。通过提前适配与探索,帮助公司 iOS 项目兼容 iOS 26 的新功能,并为后续正式上线做好技术储备。 ## 🎯 项目目标 - 深入分析 iOS 26 新特性,尤其是 Liquid Glass 的实现机制; - 提供可运行的 Demo 示例,展示新技术的实际效果; - 提前验证适配方案,降低未来升级至 iOS 26 的风险; - 形成内部技术文档,辅助团队快速掌握新特性。 --- ## 📌 功能模块概览(带技术细节) | 功能模块 | 对应页面 | 简要说明 | 技术要点 | |----------|-----------|-----------|-----------| | Xcode 26 新特性与 iOS 26 适配指南 | - | 展示 Xcode 26 工具链更新及 iOS 26 开发环境配置 | 支持 SF Symbols 7、MainActor 安全通知、`updateProperties()` 生命周期等新特性 | | `@ObservableObject` 使用指南 | `TLObservableObjectViewController` | 实践 SwiftUI 与 UIKit 混编下基于 `@ObservableObject` 的状态管理与数据绑定 | 利用 `@ObservableObject` 和 `@Published` 实现跨组件响应式更新 | | `updateProperties()` 生命周期优化 | `TLUpdatePropertiesViewController` | 探索新版 UIViewController 生命周期方法 `updateProperties()` 的使用场景与适配方式 | 在 `updateProperties()` 中刷新 UI;通过 `setNeedsUpdateProperties()` 触发异步更新机制 | | iPadOS 菜单栏(Menu Bar)支持 | `TLPadOSMenuViewController` | 针对 iPadOS 17+ 的菜单栏交互适配与演示 | 使用 `UIMenuBarSystemItem` 构建系统级菜单项,适配深色/浅色模式 | | 通知系统增强 | `TLNotificationCenterViewController` | 展示 iOS 26 中通知中心 API 变化及响应式处理,支持 MainActor 安全接收消息 | 使用 `NotificationCenter.MainActorMessage` 协议确保在主线程安全回调中更新 UI | | UINavigationController 样式与行为更新 | `TLUINavigationViewController` | 探索 iOS 26 下导航栏样式、副标题、角标、工具栏按钮等新特性的适配 | 使用 `navigationItem.largeTitle` / `largeSubtitle` 设置大标题与子标题;使用 `UIBarButtonItem.badge` 添加角标 | | iOS 26 适配指南 - `UITabBarController` | `TLTabBarController` | 探索 iOS 26 中 UITabBarController 的样式、交互及生命周期变化,提供兼容性适配方案 | 支持透明度调整、手势优先级控制、自定义 TabBar 外观渲染 | | SF Symbols 7 支持与动画切换 | `TLSFSymbols7ViewController` | 展示 iOS 26 中 SF Symbols 7 图标动态切换效果及过渡动画实践 | 使用 `UIImage(systemName:)` 加载 SF Symbols,并结合 `UIView.transition` 实现图标切换动画 | | 动画系统增强与自定义转场 | `TLAnimatorViewController` | 展示 iOS 26 中动画系统的增强功能及自定义转场动画实现 | 使用 `UIViewPropertyAnimator` 实现高级动画控制;支持交互式转场动画和弹簧动画效果 | | 视图圆角配置与动态调整 | `TLViewCornerConfigViewController` | 实现 iOS 26 中视图圆角的动态配置与实时预览,支持多种圆角样式 | 使用 `UIView.cornerRadius` 和 `cornerCurve` 属性实现自定义圆角效果;支持实时调整和预览 | --- ## 🔧 各模块技术说明章节 ### 1. `@ObservableObject` 使用指南 ```markdown ### 💡 技术要点 - **`@ObservableObject` 支持 UIKit**: 在 UIKit 场景中使用 `@ObservableObject` 进行状态共享,适用于混编项目中的统一状态管理。 - **`@Published` 自动触发更新**: 当模型属性被标记为 `@Published`,其变更会自动触发观察者的更新逻辑。 - **性能优化建议**: 尽量避免频繁修改 `@Published` 属性值,可使用 `debounce` 或 `throttle` 控制更新频率。 ``` --- ### 2. `updateProperties()` 生命周期优化 ```markdown ### 💡 技术要点 - **新的生命周期方法**: `updateProperties()` 是 iOS 26 引入的新方法,用于集中更新 UI 元素的状态,替代部分 `viewDidLayoutSubviews()` 的职责。 - **手动触发更新**: 使用 `setNeedsUpdateProperties()` 标记视图控制器需要更新,在下一个绘制周期中调用 `updateProperties()`。 - **异步安全刷新**: 该方法保证在主线程执行,适合用于刷新依赖模型状态的 UI 元素。 ``` --- ### 3. iPadOS 菜单栏(Menu Bar)支持 #### 💡 技术要点 - **系统级菜单栏支持**: iPadOS 26 中应用默认拥有类似 macOS 风格的菜单栏,用户可通过从屏幕顶部向下滑动调出。 - **自定义菜单项**: 使用 `UIMainMenuSystem` 和 `UIKeyCommand` 添加自定义菜单项和快捷键,提升应用可用性。 - **菜单组织结构**: 通过 `UIMenu` 组织子菜单项,支持插入到系统菜单的不同位置,保持界面一致性。 - **键盘快捷键支持**: 为菜单项配置键盘快捷键,提升专业用户的操作效率。 --- ### 4. 通知系统增强 ```markdown ### 💡 技术要点 - **MainActor 安全回调**: 使用 `NotificationCenter.MainActorMessage` 协议定义的消息类型,确保回调始终运行在主线程,无需手动调度。 - **结构化通知设计**: 使用泛型注册监听器,提高代码可读性和安全性,避免字符串命名错误。 - **资源释放规范**: 在 `deinit` 中移除监听器,防止内存泄漏。 ``` --- ### 5. UINavigationController 样式与行为更新 ```markdown ### 💡 技术要点 - **新增副标题与大标题支持**: `UINavigationItem.largeTitle` 和 `largeSubtitle` 支持设置大标题和子标题,提升视觉层次。 - **BarButtonItem 角标与样式**: `badge` 属性可用于显示未读数或提醒;`style = .prominent` 提升按钮的视觉优先级。 - **灵活间距控制**: 使用 `UIBarButtonItem.fixedSpace(_:)` 和 `flexibleSpace()` 控制工具栏按钮间距,增强布局灵活性。 ``` --- ### 6. SF Symbols 7 支持与动画切换 ```markdown ### 💡 技术要点 - **SF Symbols 7 特性**: 支持多层渲染、动态颜色、变体样式等高级特性,适用于液态玻璃风格的图标展示。 - **图标切换动画**: 使用 `UIView.transition(with:duration:options:animations:)` 实现图标平滑切换动画,提升用户体验。 - **SymbolConfiguration 应用**: 通过 `.applyingSymbolConfiguration()` 修改图标大小、权重、层级等属性。 ``` --- ### 7. 动画系统增强与自定义转场 #### 💡 技术要点 - **高级动画控制**: 使用 `UIViewPropertyAnimator` 实现对动画的精细控制,支持暂停、恢复、反转等操作。 - **交互式转场动画**: 通过 `UIViewControllerTransitioningDelegate` 实现自定义交互式转场动画,提升用户体验。 - **弹簧动画效果**: 利用 `UISpringTimingParameters` 创建自然的弹簧动画效果,符合液态玻璃的交互设计理念。 - **动画性能优化**: 合理使用 `CADisplayLink` 和 `CADTransaction` 确保动画流畅性,避免掉帧问题。 --- ### 8. 视图圆角配置与动态调整 #### 💡 技术要点 - **动态圆角配置**: 使用 `UIView.cornerRadius` 属性实现视图圆角的动态调整,支持实时预览效果。 - **圆角曲线控制**: 通过 `UIView.cornerCurve` 属性控制圆角的曲线类型,包括连续圆角和经典圆角等样式。 - **液态玻璃风格适配**: 结合 iOS 26 的液态玻璃设计理念,实现与系统风格一致的圆角视觉效果。 - **性能优化建议**: 对于复杂视图的圆角处理,建议使用 `CAShapeLayer` 避免离屏渲染,提升渲染性能。 --- ## 📺 参考资料 - [WWDC 2024 官方视频 - Designing for Liquid Glass](https://developer.apple.com/videos/) - [掘金专栏 - iOS 26 液态玻璃技术解析](https://juejin.cn/column/7513818640602071090) ## ✅ 项目状态 当前已完成 Liquid Glass 基础实现及其他核心模块的初步适配,支持模拟器与真机预览。后续将持续跟进 Apple 官方文档更新,完善更多交互细节。 ---