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:
Charles Wiltgen
2026-07-24 08:58:37 -07:00
parent 9642084685
commit a05c4b213e
10 changed files with 48 additions and 5 deletions
+8
View File
@@ -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)
+5
View File
@@ -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+)
+4
View File
@@ -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
+4
View File
@@ -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
+2
View File
@@ -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)
+2 -1
View File
@@ -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
+8
View File
@@ -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
+4
View File
@@ -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
+5 -1
View File
@@ -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
+6 -3
View File
@@ -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