Axiom Uikit

CharlesWiltgen/Axiom/axiom-cursor/skills/axiom-uikit

作者 CharlesWiltgen82c7feafae634a79b4336b3381289441886c122c无许可证1.1K 个星标收录于 2026年10月9日更新于 2026年10月9日仓库今天更新

Use when bridging UIKit and SwiftUI, modernizing UIKit apps (scene lifecycle, resizability), debugging Auto Layout, Combine, TextKit, PencilKit, or UIKit animations.

AI 生成的概览

将 UIKit 与 SwiftUI 桥接、Auto Layout、Combine、TextKit、PencilKit 和动画问题路由到参考指南。

功能
这是一个面向 Apple UIKit 开发的路由型技能。它把症状和任务(如约束冲突、CAAnimation 完成回调问题、Combine 发布者生命周期、TextKit 2 迁移、PencilKit 画布以及场景生命周期现代化)映射到技能文件夹中的具体参考文档。它还给出在 UIKit、SwiftUI、并发和性能技能之间做选择的冲突解决规则,并列出示例调用及应阅读的参考文件。
适用场景
适用于在 UIKit 与 SwiftUI 之间桥接、为场景生命周期或可调整大小进行 UIKit 应用现代化,或调试 Auto Layout、Combine、TextKit、PencilKit 与 UIKit 动画时。也用于判断某个 UI 问题应归入 UIKit 还是 SwiftUI 指导。
运行要求
不需要脚本,仅包含说明和参考文档。它假定可以访问所引用的技能文件,并在进行尺寸调整审计时委派给 resize-auditor 子代理或审计命令。

UIKit & Bridging

You MUST use this skill for ANY UIKit bridging, Auto Layout, Combine, TextKit, or UIKit animation work.

Cursor Subagent Routing

Delegate to the appropriate Cursor subagent when this router calls for a specialized auditor.

Quick Reference

Symptom / TaskReference
UIViewRepresentable, UIViewControllerRepresentableSee skills/uikit-bridging.md
Embedding SwiftUI in UIKit (UIHostingController)See skills/uikit-bridging.md
Coordinator pattern, updateUIView lifecycleSee skills/uikit-bridging.md
Building adaptive UIKit layout: guides, width-conditional constraints, compositional layout, self-sizing cellsSee skills/adaptive-layout.md
"Unable to simultaneously satisfy constraints"See skills/auto-layout-debugging.md
Constraint conflicts, ambiguous layoutSee skills/auto-layout-debugging.md
Views not appearing, positioned incorrectlySee skills/auto-layout-debugging.md
CAAnimation completion handler not firingSee skills/uikit-animation-debugging.md
Spring physics wrong on device, duration mismatchSee skills/uikit-animation-debugging.md
Animation jank, CATransaction timingSee skills/uikit-animation-debugging.md
Combine publishers, AnyCancellable lifecycleSee skills/combine-patterns.md
@Published properties, Combine ↔ async/awaitSee skills/combine-patterns.md
When to use Combine vs async/awaitSee skills/combine-patterns.md
UIScene lifecycle required, resizable apps, size classes, tab sidebar OS27See skills/uikit-modernization.md
iPhone Mirroring compat: indirect input, companion Face ID, portrait trapSee skills/uikit-modernization.md
Scene edges: teardown, activation requests, per-scene restoration, external display, activeAppearanceSee skills/uikit-modernization.md
Nav bar title and subtitle: UINavigationItem.subtitle, largeSubtitleView, attributedTitle/attributedSubtitle, subtitle text attributes (iOS 26)See skills/uikit-modernization.md
Automated resize-readiness scan (scene lifecycle, UIScreen.main, fixed-canvas, Mirroring input, iPhone Duo)Delegate to the resize-auditor subagent or /axiom-audit resize
iPhone Duo in UIKit: vertical bars, the fold, window requests on the outer displaySee axiom-swiftui (skills/iphone-duo.md) — UIKit equivalents sit beside each SwiftUI API
TextKit 2 architecture, NSTextLayoutManagerSee skills/textkit-ref.md
Writing Tools integration (iOS 26)See skills/textkit-ref.md
Viewport rendering surfaces, attachment reuse, collapsible text OS27See skills/textkit-ref.md
SwiftUI TextEditor, TextKit 1 migrationSee skills/textkit-ref.md
Grammar checking (UITextChecker), per-edge text-block borders OS27See skills/textkit-ref.md
PencilKit canvas, PKToolPicker, drawing persistenceSee skills/pencilkit-paperkit.md
Apple Pencil Pro (squeeze, barrel roll, hover, haptics)See skills/pencilkit-paperkit.md
Handwriting recognition (PKStrokeRecognizer), stroke identity/slicing OS27See skills/pencilkit-paperkit-ref.md
PaperKit markup canvas (shapes, images, text + drawing)See skills/pencilkit-paperkit-ref.md
PaperKit programmatic markup model (subelements, adornments) OS27See skills/pencilkit-paperkit-ref.md

Decision Tree

dot
digraph uikit {    start [label="UIKit task" shape=ellipse];    what [label="What do you need?" shape=diamond];
    start -> what;    what -> "skills/uikit-bridging.md" [label="wrap UIKit in SwiftUI\nor SwiftUI in UIKit"];    what -> "skills/adaptive-layout.md" [label="build adaptive layout\n(guides, constraint sets,\ncompositional)"];    what -> "skills/auto-layout-debugging.md" [label="constraint errors,\nlayout issues"];    what -> "skills/uikit-animation-debugging.md" [label="CAAnimation bugs,\nspring physics,\ncompletion handlers"];    what -> "skills/combine-patterns.md" [label="publishers, sinks,\n@Published,\nasync/await bridge"];    what -> "skills/textkit-ref.md" [label="text layout,\nWriting Tools,\nTextKit migration"];    what -> "skills/pencilkit-paperkit.md" [label="drawing canvas,\nApple Pencil,\nPaperKit markup"];    what -> "skills/uikit-modernization.md" [label="scene lifecycle (required 27),\nresizable apps,\nsize classes"];}
  1. Scene-lifecycle migration, "app won't launch on 27", resizability, size classes, tab sidebar? → skills/uikit-modernization.md 0b. App misbehaves in iPhone Mirroring (gestures dead, Face ID blocked, layout stuck portrait)? → skills/uikit-modernization.md 0c. iPhone Duo / foldable iPhone (vertical bars, the fold, outer-display window requests)? → axiom-swiftui (skills/iphone-duo.md)
  2. UIViewRepresentable / UIViewControllerRepresentable / UIHostingController? → skills/uikit-bridging.md
  3. "Unable to simultaneously satisfy constraints" / layout bugs? → skills/auto-layout-debugging.md 2b. Building a layout that adapts (layout guides, size-class constraint sets, compositional column math, self-sizing cells)? → skills/adaptive-layout.md
  4. CAAnimation completion missing / spring physics wrong / animation jank? → skills/uikit-animation-debugging.md
  5. Combine publishers / AnyCancellable / @Published / Combine ↔ async bridge? → skills/combine-patterns.md
  6. TextKit 2 / Writing Tools / TextEditor / TextKit 1 migration? → skills/textkit-ref.md
  7. PencilKit canvas / Apple Pencil / PaperKit markup? → skills/pencilkit-paperkit.md
  8. Pure SwiftUI view question (no UIKit bridging)? → /skill axiom-swiftui
  9. Design decisions, HIG, Liquid Glass, SF Symbols, typography? → /skill axiom-design
  10. Block retain cycles in UIKit callbacks? → See axiom-performance (skills/objc-block-retain-cycles.md)
  11. Memory leaks from Combine subscriptions? → Start with skills/combine-patterns.md, then axiom-performance if leak persists

Conflict Resolution

uikit vs swiftui: When working with UI code:

  • Use uikit when wrapping UIKit in SwiftUI or vice versa, or debugging UIKit-specific issues (Auto Layout, CAAnimation)
  • Use swiftui for pure SwiftUI views, navigation, layout, animations

uikit vs concurrency: When Combine interacts with async/await:

  • Use uikit (skills/combine-patterns.md) for bridging Combine pipelines with async/await
  • Use concurrency for pure async/await patterns, actors, Sendable

uikit vs performance: When animations or layout cause performance issues:

  1. Try uikit FIRST — Most animation jank is CATransaction timing or layer state, not a profiling issue
  2. Only use performance if animation logic is correct but rendering is slow

uikit vs axiom-data: When @Published properties relate to data persistence:

  • Use uikit for Combine publisher patterns and @Published lifecycle
  • Use axiom-data for SwiftData/Core Data model layer concerns

Anti-Rationalization

ThoughtReality
"I'll just use UIHostingController, it's simple"Hosting has sizing, lifecycle, and navigation edge cases. skills/uikit-bridging.md covers the gotchas.
"Auto Layout error is just a warning, I'll ignore it"Unsatisfied constraints cause unpredictable layout at runtime. Fix them now.
"I know how CAAnimation works"90% of CAAnimation bugs are CATransaction timing, not Core Animation. Check skills/uikit-animation-debugging.md.
"Combine is dead, just rewrite with async/await"Combine has no deprecation notice. Rewriting working pipelines wastes time. skills/combine-patterns.md covers when to migrate vs maintain.
"TextKit 1 still works fine"TextKit 1 misses Writing Tools integration and has known layout bugs Apple won't fix. See skills/textkit-ref.md.
"I'll store cancellables in a local variable"Local AnyCancellable deallocates immediately, killing the subscription.
"I'll archive the PKCanvasView to save the drawing"Archiving the view loses editability. Persist drawing.dataRepresentation(). See skills/pencilkit-paperkit.md.
"My tool picker won't show, the API must be broken"The canvas must becomeFirstResponder() after setVisible(_:forFirstResponder:). See skills/pencilkit-paperkit.md.

Example Invocations

User: "How do I wrap a UIKit view in SwiftUI?" → Read: skills/uikit-bridging.md

User: "I'm getting 'Unable to simultaneously satisfy constraints'" → Read: skills/auto-layout-debugging.md

User: "My CAAnimation completion handler never fires" → Read: skills/uikit-animation-debugging.md

User: "Should I use Combine or async/await for this?" → Read: skills/combine-patterns.md

User: "How do I integrate Writing Tools with my text editor?" → Read: skills/textkit-ref.md

User: "How do I add an Apple Pencil drawing canvas with the tool picker?" → Read: skills/pencilkit-paperkit.md

User: "How do I add a PaperKit markup canvas with shapes and text?" → Read: skills/pencilkit-paperkit-ref.md

User: "My SwiftUI view has a memory leak from a Combine subscription" → Read: skills/combine-patterns.md

User: "How do I embed SwiftUI in my UIKit app?" → Read: skills/uikit-bridging.md

User: "Audit my app for screen resizing support" → Delegate to the resize-auditor subagent (or /axiom-audit resize)

User: "My custom pinch gesture stops working when the app runs in iPhone Mirroring" → Read: skills/uikit-modernization.md

User: "How do I vary my collection view's column count with the window width?" → Read: skills/adaptive-layout.md

来源与署名

来源:CharlesWiltgen/Axiom位于axiom-cursor/skills/axiom-uikit提交82c7fea

许可证: 无许可证

内容归原作者所有。SourceWeft 从公开仓库中收录这些内容。

举报或申请下架