iOS 27 适配笔记

5,185 阅读6分钟

这是适配iOS 27的笔记,并非介绍新功能和API。跟以前一样,发现一个就写一个。

传统竖屏 UIKit 项目如何简单适配 iPhone Duo

传统竖屏 UIKit 项目,也就是没有适配 iPad 版、大量使用 frame 布局、或 AutoLayout 用的绝对数值的 App,分享一下我这几天踩坑总结下来的方案,在不改动大部分 UI 结构的情况下先快速适配第一版:传统竖屏 UIKit 项目简单适配 iPhone Duo 的第一版

在其他 Agent 中使用 Xcode 27 的技能

原本是 Xcode 内置AI用的 Skills,主要用来适配 iOS 27,但众所周知国内一般用不了,所以苹果提供导出指令:xcrun agent skills export,用来给其他工具用,例如 Codex。

我已经导出来了,需要的可以去这里下载:ShareTools

xcode-skills(2026.09.22 更新:新增 iPhone Duo 适配技能)

从 Xcode 27 导出的官方 Skills:

技能用途
adopt-c-bounds-safety帮助 C 项目采用和调试 -fbounds-safety,覆盖指针边界注解、渐进式迁移策略、编译配置、常见陷阱和越界运行时崩溃排查。
app-intents-specialistApp Intents 通用最佳实践指南。用于编写、重构和审查 Intent、Entity、Query、参数、依赖、结果与错误、Donation、本地化、快捷短语和 URL 跳转等代码。
app-intents-whats-new-27处理 iOS 26 / 27 新增或变更的 App Intents API,包括执行模式、交互式 Snippet、Visual Intelligence、Spotlight 索引、跨设备实体、系统快捷指令和意图测试。
audit-xcode-security-settings审计并逐步加强 Xcode 项目的安全构建配置,覆盖编译器与静态分析诊断、Enhanced Security、内存保护、相关 entitlements 和决策记录。不负责 ATS/TLS、代码签名和隐私 API。
building-document-based-swiftui-applications使用 SDK 27 的 SwiftUI Document 协议构建或迁移文档型应用,覆盖打开、编辑、自动保存、导出、撤销、包文档、自定义 UTType,以及从 FileDocument / ReferenceFileDocument 迁移。
device-interaction在真机或模拟器上安装并运行应用,通过截图、UI 层级、触摸、键盘、旋转和遥控器等操作验证功能与布局,支持 iOS、watchOS 和 tvOS 交互。
modernize-tests把现有 XCTest 迁移到 Swift Testing,或使用现代模式改进已有测试,覆盖断言、异步确认、参数化、跳过条件、已知问题、并发和附件;XCUI 自动化与 XCTest 性能测试仍保留 XCTest。
swiftui-specialistSwiftUI 通用最佳实践与性能指南。用于编写、重构和审查视图结构、数据流、Environment、Modifier、本地化、动画、ForEach / List 和软废弃 API。
swiftui-whats-new-27处理 SDK 27 的 SwiftUI 新 API 和兼容性变化,包括 @State 宏、统一 @ContentBuilder、任意容器拖拽排序与侧滑操作、AsyncImage 缓存、工具栏和基于可选项绑定的弹窗。
app-resizability让 UIKit 应用适配运行时窗口尺寸变化、多窗口、分屏、Stage Manager 和折叠屏 iPhone Duo;迁移 UIScreen.main、方向、设备类型、Scene 生命周期及 Safe Area 等旧式共享状态与布局假设,支持 Swift 与 Objective-C。

ios-27-xcode-skills-plugin

这是基于 xcode-skills 中的 10 个 skills 资源封装而成的 Codex 个人插件包,把里面的技能内容整理为 Codex 插件规范所需的目录结构,并补充插件元信息与展示资源,方便在 Codex 插件页中安装、启用和分享。插件内容与 skills/xcode-skills 保持同步。

包内关键结构:

  • .codex-plugin/plugin.json:Codex 插件 manifest,声明插件名称、版本、展示信息、图标、默认提示词,以及 skills 入口。
  • skills/:与 skills/xcode-skills 同步的 10 个技能,包含 iOS 27 / Xcode beta 适配相关的 skill 定义、工作流、参考资料和辅助脚本。
  • assets/:插件展示资源,例如 logo / composerIcon 使用的图标文件。

安装完成后,它会作为 ios-27-xcode-skills@personal 出现在 Codex 的个人插件中。

1. 保存插件

把 codex-plugin/ios-27-xcode-skills-plugin/ios-27-xcode-skills 目录复制到 ~/Documents/CodexPlugins/,能看到插件文件:

~/Documents/CodexPlugins/ios-27-xcode-skills/
  .codex-plugin/plugin.json
  assets/
  skills/

2. 配置个人插件 marketplace

创建或更新个人插件清单:

mkdir -p ~/.agents/plugins

编辑 ~/.agents/plugins/marketplace.json,加入下面内容。

如果你原本没有这个文件,可以直接使用:

{
  "name": "personal",
  "interface": {
    "displayName": "Personal"
  },
  "plugins": [
    {
      "name": "ios-27-xcode-skills",
      "source": {
        "source": "local",
        "path": "./Documents/CodexPlugins/ios-27-xcode-skills"
      },
      "policy": {
        "installation": "AVAILABLE",
        "authentication": "ON_INSTALL"
      },
      "category": "Productivity"
    }
  ]
}

如果你保存到了别的位置,把 source.path 改成对应路径。以 ~ 为根时建议写成类似:

./Documents/CodexPlugins/ios-27-xcode-skills

3. 安装插件

在 Codex 桌面版中打开一个新会话,或用 Codex 自带 CLI 执行:

/Applications/Codex.app/Contents/Resources/codex plugin add ios-27-xcode-skills@personal

4. 验证

/Applications/Codex.app/Contents/Resources/codex plugin list | grep ios-27-xcode-skills

看到 installed, enabled 就表示安装成功。

5. 使用方式

安装后,在新会话里可以直接这样问:

帮我适配 iOS 27 的 SwiftUI API 变化
帮我使用 iOS 27 的 App Intents 新 API
迁移这个 SwiftUI 文档型应用
审查这个项目的 Xcode 安全设置
让 UIKit 应用适配 iPhone Duo、分屏和动态窗口尺寸

当前 xcode-skills 包含的主要能力:

  • SwiftUI SDK 27 新 API、行为变化与兼容性适配
  • SwiftUI 代码最佳实践与性能审查
  • App Intents 通用最佳实践,以及 iOS 26 / 27 新 API 适配
  • SwiftUI 文档型应用构建与旧文档 API 迁移
  • UIKit 动态窗口、多窗口、分屏、Stage Manager 与 iPhone Duo 适配,并现代化 Scene 生命周期、UIScreen、方向、设备类型和 Safe Area
  • XCTest 到 Swift Testing 的迁移与已有测试现代化
  • Xcode 安全构建设置、Enhanced Security 与 entitlements 审查
  • C -fbounds-safety 迁移与调试
  • iOS、watchOS 和 tvOS 真机/模拟器 UI 行为验证

完整安装说明见 Codex 插件安装文档。

ios-27-xcode-skills Claude Code 插件

这是基于同一套 xcode-skills 资源封装的 Claude Code 插件包,包含 10 个技能和一个本地 marketplace 清单。安装后,Claude Code 会根据任务内容自动使用匹配技能,也可以通过 ios-27-xcode-skills 命名空间显式调用。

包内关键结构:

  • .claude-plugin/marketplace.json:本地 marketplace 清单,用于注册和持久安装插件。
  • ios-27-xcode-skills/.claude-plugin/plugin.json:Claude Code 插件 manifest。
  • ios-27-xcode-skills/skills/:与 skills/xcode-skills 完全同步的 10 个技能。
  • INSTALL.md:临时加载、本地 marketplace 安装和验证说明。

临时加载

claude --plugin-dir ~/Documents/ClaudeCodePlugins/ios-27-xcode-skills-plugin/ios-27-xcode-skills

通过本地 marketplace 安装

claude plugin marketplace add ~/Documents/ClaudeCodePlugins/ios-27-xcode-skills-plugin
claude plugin install ios-27-xcode-skills@ios-27-xcode-skills-marketplace

安装后可以直接描述需求,也可以显式调用技能:

/ios-27-xcode-skills:swiftui-specialist
/ios-27-xcode-skills:app-intents-whats-new-27

完整安装说明见 Claude Code 插件安装文档。

不过现在不太敢立马适配,感觉会改动特别大🫠...

陆续更新...

发现一个写一个😫