mirror of
https://github.com/CharlesWiltgen/Axiom.git
synced 2026-09-20 19:58:20 +08:00
docs: companion-page updates for the tier-3 adaptive-layout batch
Drift updates across 10 pages: example prompts and index entries for the new skill sections (swiftui-layout, swiftui-layout-ref, toolbars, uikit-modernization, transferable-ref, spritekit, accessibility-diag, typography-ref, windows, ios-apps-on-mac), plus the navigationBarMinimization API-name correction on the uikit-modernization page.
This commit is contained in:
@@ -55,6 +55,14 @@ Diagnostic workflows for VoiceOver testing, Dynamic Type support, color contrast
|
||||
- Generated subtitles (iOS/macOS 27) — automatic on-device transcription/translation; your job is the subtitle-selection UI
|
||||
- Live subtitle style preview (iOS 26.4+) — `AVPlayerLayer`/`AVLegibleMediaOptionsMenuController`, `MACaptionAppearance` profiles
|
||||
|
||||
#### Resizable Windows & Desktop-Class
|
||||
- VoiceOver reading order surviving layout changes (column collapse, resize)
|
||||
- Table and grid navigation semantics (SwiftUI `Table`, `UIAccessibilityContainerDataTable`)
|
||||
- Toolbar-overflow accessible names
|
||||
- Button Shapes support in custom controls
|
||||
- Large Content Viewer adoption for custom bars
|
||||
- Full Keyboard Access and Switch Control depth testing
|
||||
|
||||
#### Assistive Access
|
||||
- Assistive Access support (iOS 17+, cognitive disabilities)
|
||||
|
||||
|
||||
@@ -27,6 +27,11 @@ Complete guide to all SwiftUI layout APIs for building adaptive interfaces, base
|
||||
- **Dynamic Type** – dynamicTypeSize.isAccessibilitySize
|
||||
- **ScaledMetric** – Scaled dimensions for accessibility
|
||||
|
||||
### Alignment & Text Under Width Pressure
|
||||
- **alignmentGuide** – Per-view guide adjustment within a stack (iOS 13+)
|
||||
- **Custom alignments** – `AlignmentID` semantic lines that align views across nested containers
|
||||
- **layoutPriority / truncationMode / allowsTightening / minimumScaleFactor** – Controlling which text gives way, and how, when a window narrows
|
||||
|
||||
### Window APIs
|
||||
- **Resizable windows everywhere** – iPhone apps resize too (Mac mirroring, iPhone-only on iPad)
|
||||
- **onInteractiveResizeChange** – Throttle work during a live resize drag (iOS 26+)
|
||||
|
||||
@@ -24,6 +24,8 @@ Questions you can ask Claude that will draw from this reference:
|
||||
- "How do I declare a custom UTType?"
|
||||
- "How do I accept dropped files in my view?"
|
||||
- "How do I add copy/paste support for my custom type?"
|
||||
- "How do file promises work when dragging to Finder?"
|
||||
- "My drop target stops working after the window resizes mid-drag"
|
||||
|
||||
## What's Covered
|
||||
|
||||
@@ -37,6 +39,8 @@ Questions you can ask Claude that will draw from this reference:
|
||||
- **Clipboard** – `.copyable`, `.pasteDestination`, `.cuttable`, `PasteButton`
|
||||
- **UTType declarations** – System types, custom types, Info.plist entries
|
||||
- **UIKit bridging** – NSItemProvider.loadTransferable, UIActivityViewController
|
||||
- **Promised files** – NSFilePromiseProvider / NSFilePromiseReceiver for drags to Finder (Mac)
|
||||
- **Drop-target correctness under reflow** – keeping drop handling live through mid-drag window resizes
|
||||
|
||||
## Key Patterns
|
||||
|
||||
|
||||
@@ -29,6 +29,8 @@ Questions you can ask Claude that will draw from this reference:
|
||||
- "How do I use SF Mono for code?"
|
||||
- "What font widths are available in SF Pro?"
|
||||
- "How do I support Dynamic Type in my app?"
|
||||
- "Why does the same text style render smaller on the Mac?"
|
||||
- "Why does Chinese text clip in my fixed-height rows?"
|
||||
|
||||
## What's Covered
|
||||
|
||||
@@ -60,6 +62,8 @@ Questions you can ask Claude that will draw from this reference:
|
||||
- Minimum sizes for legibility
|
||||
- Line height and tracking
|
||||
- Internationalization considerations
|
||||
- Mac typographic density (measured text-style sizes vs iOS)
|
||||
- CJK density in compact widths (line height, per-character wrapping, `typesettingLanguage`, Hangul word priority)
|
||||
|
||||
## Key Pattern
|
||||
|
||||
|
||||
@@ -28,6 +28,7 @@ Use this skill when:
|
||||
- "My frame rate is dropping, how do I optimize?"
|
||||
- "How do I integrate SpriteKit with SwiftUI?"
|
||||
- "Objects are passing through walls in my game"
|
||||
- "My game distorts or letterboxes when the window is resized (iOS 27)"
|
||||
|
||||
## What This Skill Provides
|
||||
|
||||
@@ -36,6 +37,7 @@ Use this skill when:
|
||||
- Anchor point mechanics for sprites and scenes
|
||||
- Node tree hierarchy with z-ordering layers
|
||||
- Camera node pattern for viewport control and HUD
|
||||
- Scale-mode selection, and the resizable-window strategy (iOS 27): extend the world with `.resizeFill` + `didChangeSize`, or letterbox with `.aspectFit`, with resize-throttling guidance
|
||||
|
||||
### Physics Engine
|
||||
- Bitmask discipline (the #1 source of SpriteKit bugs)
|
||||
|
||||
@@ -21,12 +21,13 @@ Use this skill when:
|
||||
- "Why does my iOS app on Apple silicon report `isMacCatalystApp` as true?"
|
||||
- "What breaks when my iPhone app runs on a Mac?"
|
||||
- "Should I use Optimize Interface for Mac?"
|
||||
- "How do I support ⌘P printing in my Catalyst app?"
|
||||
|
||||
## What This Skill Provides
|
||||
|
||||
- A **decision tree** across the three paths: run unmodified, Catalyst, or a native SwiftUI/AppKit target
|
||||
- **Designed for iPad mechanics** – opt-out availability on the Mac App Store, single-touch synthesis, Touch Alternatives, hardware-gated frameworks that error at runtime, the idiom staying `.pad`/`.phone`
|
||||
- **Catalyst adoption checklist** – interface-idiom choice (77% iPad scaling vs native Mac controls), `UIMenuBuilder` menu bar, `UITitlebar`/`NSToolbar` window chrome, Settings scene, hover and keyboard support
|
||||
- **Catalyst adoption checklist** – interface-idiom choice (77% iPad scaling vs native Mac controls), `UIMenuBuilder` menu bar, `UITitlebar`/`NSToolbar` window chrome, Settings scene, hover and keyboard support, ⌘P printing (`UIPrintInteractionController`)
|
||||
- The **three runtime checks** disambiguated — `targetEnvironment(macCatalyst)` vs `isMacCatalystApp` vs `isiOSAppOnMac`
|
||||
|
||||
## Related
|
||||
|
||||
@@ -29,6 +29,9 @@ Questions you can ask Claude that will draw from this skill:
|
||||
- "Why does my app quit when I close the main window?"
|
||||
- "My `.defaultSize` is ignored on relaunch — is that a bug?"
|
||||
- "How do I make a floating Inspector window that stays above the main app?"
|
||||
- "How do I show a subtitle under the window title?"
|
||||
- "How do I get the draggable document proxy icon in my title bar?"
|
||||
- "My window content is blurry after moving to another display"
|
||||
|
||||
## What This Skill Provides
|
||||
|
||||
@@ -49,6 +52,11 @@ Questions you can ask Claude that will draw from this skill:
|
||||
- Why `defaultSize` is ignored once the user has resized — and why that's correct
|
||||
- `.windowResizability(.automatic / .contentSize / .contentMinSize)`
|
||||
|
||||
### Window Chrome and Displays
|
||||
- `navigationTitle` / `navigationSubtitle` (macOS 11+; iOS 26+) and the `navigationDocument` proxy icon
|
||||
- UIKit/AppKit peers: `UIDocumentProperties`, `NSWindow.title`/`.subtitle`/`.representedURL`
|
||||
- Windows moving between displays with different scales — `\.displayScale`, `viewDidChangeBackingProperties`, scale-keyed cache invalidation
|
||||
|
||||
### Toolbar and Window Styles
|
||||
- `.windowStyle(.automatic / .hiddenTitleBar / .titleBar)`
|
||||
- `.windowToolbarStyle(.unified / .unifiedCompact / .expanded)` and when each fits
|
||||
|
||||
@@ -21,6 +21,8 @@ Covers tool selection (ViewThatFits vs AnyLayout vs onGeometryChange), size clas
|
||||
- "Preparing app for iOS 26 window resizing"
|
||||
- "Should my iPhone app look like iPad in a wide window?" (iOS 27)
|
||||
- "My scroll position / selection / draft is lost when the window resizes"
|
||||
- "My form's Confirm button is clipped off-screen when the window is short"
|
||||
- "Text lines are unreadably wide in a large window"
|
||||
|
||||
## Key Patterns
|
||||
|
||||
@@ -32,6 +34,8 @@ Covers tool selection (ViewThatFits vs AnyLayout vs onGeometryChange), size clas
|
||||
| Switch H↔V with animation | `AnyLayout` |
|
||||
| Read container size | `onGeometryChange` |
|
||||
| Custom layout algorithm | `Layout` protocol |
|
||||
| Keep non-shrinkable content reachable in small windows | `ViewThatFits` + `ScrollView` fallback |
|
||||
| Cap text line length in wide windows | Readable-width frame idiom |
|
||||
|
||||
### Anti-Patterns Prevented
|
||||
|
||||
|
||||
@@ -32,6 +32,8 @@ Questions you can ask Claude that will draw from this skill:
|
||||
- "Why does the spacer between my toolbar items disappear when the bar overflows?"
|
||||
- "What does Apple's HIG say about Cancel and Done buttons in a sheet?"
|
||||
- "How do I control which toolbar items collapse into the overflow menu? (iOS 27)"
|
||||
- "How do I make the navigation bar minimize as the user scrolls? (iOS 27)"
|
||||
- "How do I wire up EditButton and editMode for my List?"
|
||||
|
||||
## What This Skill Provides
|
||||
|
||||
@@ -52,6 +54,8 @@ Questions you can ask Claude that will draw from this skill:
|
||||
- Toolbar visibility, background material, and color scheme per bar
|
||||
- macOS `windowToolbarStyle` on the Scene (not the View)
|
||||
- Toolbar overflow & visibility priority — `ToolbarOverflowMenu`, `.visibilityPriority`, `.topBarPinnedTrailing` (iOS 27)
|
||||
- Bar minimization on scroll — `toolbarMinimizationBehavior`, safe-area adjustment, and restoration, per `ToolbarPlacement` (iOS 27)
|
||||
- `EditButton`/`editMode` wiring for List editing, and the direct-manipulation alternatives on the Mac
|
||||
|
||||
### HIG sheet button rules
|
||||
|
||||
@@ -106,4 +110,4 @@ The `.primaryAction` placement adapts across platforms — top-trailing on iOS a
|
||||
|
||||
**WWDC**: 2020-10146, 2021-10054, 2022-10054, 2024-10148, 2025-219, 2026-269
|
||||
|
||||
**Docs**: /swiftui/toolbar, /swiftui/toolbaritem, /swiftui/toolbaritemgroup, /swiftui/toolbarspacer, /swiftui/toolbaritemplacement, /swiftui/toolbarrole, /swiftui/customizabletoolbarcontent, /swiftui/toolbaritemplacement/topbarpinnedtrailing, /swiftui/toolbaroverflowmenu, /swiftui/toolbaritemvisibilitypriority
|
||||
**Docs**: /swiftui/toolbar, /swiftui/toolbaritem, /swiftui/toolbaritemgroup, /swiftui/toolbarspacer, /swiftui/toolbaritemplacement, /swiftui/toolbarrole, /swiftui/customizabletoolbarcontent, /swiftui/toolbaritemplacement/topbarpinnedtrailing, /swiftui/toolbaroverflowmenu, /swiftui/toolbaritemvisibilitypriority, /swiftui/view/toolbarminimizationbehavior(_:for:), /swiftui/editbutton
|
||||
|
||||
@@ -30,6 +30,9 @@ Use this skill when:
|
||||
- "What goes in UIApplicationSceneManifest for a single-window app?"
|
||||
- "What should I clean up in sceneDidDisconnect?"
|
||||
- "How do I open a new window from UIKit code?"
|
||||
- "How do I let users drag an item out to open it as a new window on iPad?"
|
||||
- "Cmd-Z in one window undoes edits made in another window"
|
||||
- "How do I disable Scribble on one text field?"
|
||||
- "Why was my upload rejected for a missing launch screen?"
|
||||
- "What's the View Annotations API for Siri?"
|
||||
|
||||
@@ -37,11 +40,11 @@ Use this skill when:
|
||||
|
||||
- The **scene-lifecycle requirement** at iOS 27 (apps without a `UISceneDelegate` no longer launch) and the migration path
|
||||
- **Info.plist configuration** – the `UIApplicationSceneManifest` structure, the launch-screen key validated at upload on the 27 SDK (TN3208), and destinations-vs-device-checks
|
||||
- **Scene lifecycle edges** – `sceneDidDisconnect` teardown semantics, `UISceneSessionActivationRequest` window opening, per-scene `NSUserActivity` restoration, external-display scene roles, and the `displayGamut`/`legibilityWeight`/`activeAppearance` traits
|
||||
- **Scene lifecycle edges** – `sceneDidDisconnect` teardown semantics, `UISceneSessionActivationRequest` window opening, drag-to-create-window (drag items carrying an `NSUserActivity`, gated on `NSUserActivityTypes`), per-window undo scoping, per-scene `NSUserActivity` restoration, external-display scene roles, and the `displayGamut`/`legibilityWeight`/`activeAppearance` traits
|
||||
- A **don't/do table** for replacing `UIScreen.main`, `screen.scale`, `screen.bounds`, idiom, and orientation with scene/trait/size-class equivalents
|
||||
- The new iOS 27 additive APIs — `prominentTabIdentifier`, `UITabBarControllerSidebar.preferredPlacement`, `barMinimizationSafeAreaAdjustment`, `UIMenuElement.preferredImageVisibility`, `deviceMotionBody`/`headingBody`
|
||||
- The new iOS 27 additive APIs — `prominentTabIdentifier`, `UITabBarControllerSidebar.preferredPlacement`, `navigationBarMinimization`, `UIMenuElement.preferredImageVisibility`, `deviceMotionBody`/`headingBody`
|
||||
- **iPhone Mirroring compatibility** – the always-portrait orientation trap, indirect trackpad/mouse input reaching custom gesture recognizers (`UIApplicationSupportsIndirectInputEvents`, scroll-type masks), companion Face ID approval on the Mac (iOS 18), and cross-device drag and drop
|
||||
- **Desktop-class input** – `UIPointerInteraction` pointer effects, `UIHoverGestureRecognizer`, and `UIKeyCommand` with `discoverabilityTitle` for the hold-⌘ shortcut HUD
|
||||
- **Desktop-class input** – `UIPointerInteraction` pointer effects, `UIHoverGestureRecognizer`, `UIKeyCommand` with `discoverabilityTitle` for the hold-⌘ shortcut HUD, and Scribble (`UIScribbleInteraction` / `UIIndirectScribbleInteraction`) for Pencil handwriting
|
||||
- Apple Intelligence touchpoints (menu "Ask Siri", View Annotations, drag-and-drop resource loading)
|
||||
- How to let Xcode 27's app-modernization agent do the mechanical rewrites
|
||||
|
||||
|
||||
Reference in New Issue
Block a user