@mison/ag-kit-cn 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agent/.shared/ui-ux-pro-max/data/charts.csv +26 -0
- package/.agent/.shared/ui-ux-pro-max/data/colors.csv +97 -0
- package/.agent/.shared/ui-ux-pro-max/data/icons.csv +101 -0
- package/.agent/.shared/ui-ux-pro-max/data/landing.csv +31 -0
- package/.agent/.shared/ui-ux-pro-max/data/products.csv +97 -0
- package/.agent/.shared/ui-ux-pro-max/data/prompts.csv +24 -0
- package/.agent/.shared/ui-ux-pro-max/data/react-performance.csv +45 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/react.csv +54 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/vue.csv +50 -0
- package/.agent/.shared/ui-ux-pro-max/data/styles.csv +59 -0
- package/.agent/.shared/ui-ux-pro-max/data/typography.csv +58 -0
- package/.agent/.shared/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
- package/.agent/.shared/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
- package/.agent/.shared/ui-ux-pro-max/data/web-interface.csv +31 -0
- package/.agent/.shared/ui-ux-pro-max/scripts/core.py +258 -0
- package/.agent/.shared/ui-ux-pro-max/scripts/design_system.py +1067 -0
- package/.agent/.shared/ui-ux-pro-max/scripts/search.py +106 -0
- package/.agent/ARCHITECTURE.md +285 -0
- package/.agent/agents/backend-specialist.md +268 -0
- package/.agent/agents/code-archaeologist.md +106 -0
- package/.agent/agents/database-architect.md +225 -0
- package/.agent/agents/debugger.md +225 -0
- package/.agent/agents/devops-engineer.md +242 -0
- package/.agent/agents/documentation-writer.md +104 -0
- package/.agent/agents/explorer-agent.md +73 -0
- package/.agent/agents/frontend-specialist.md +618 -0
- package/.agent/agents/game-developer.md +162 -0
- package/.agent/agents/mobile-developer.md +382 -0
- package/.agent/agents/orchestrator.md +438 -0
- package/.agent/agents/penetration-tester.md +188 -0
- package/.agent/agents/performance-optimizer.md +187 -0
- package/.agent/agents/product-manager.md +112 -0
- package/.agent/agents/product-owner.md +95 -0
- package/.agent/agents/project-planner.md +405 -0
- package/.agent/agents/qa-automation-engineer.md +103 -0
- package/.agent/agents/security-auditor.md +170 -0
- package/.agent/agents/seo-specialist.md +111 -0
- package/.agent/agents/test-engineer.md +158 -0
- package/.agent/mcp_config.json +12 -0
- package/.agent/rules/GEMINI.md +273 -0
- package/.agent/scripts/auto_preview.py +148 -0
- package/.agent/scripts/checklist.py +217 -0
- package/.agent/scripts/session_manager.py +120 -0
- package/.agent/scripts/verify_all.py +327 -0
- package/.agent/skills/api-patterns/SKILL.md +84 -0
- package/.agent/skills/api-patterns/api-style.md +42 -0
- package/.agent/skills/api-patterns/auth.md +24 -0
- package/.agent/skills/api-patterns/documentation.md +26 -0
- package/.agent/skills/api-patterns/graphql.md +41 -0
- package/.agent/skills/api-patterns/rate-limiting.md +31 -0
- package/.agent/skills/api-patterns/response.md +37 -0
- package/.agent/skills/api-patterns/rest.md +40 -0
- package/.agent/skills/api-patterns/scripts/api_validator.py +211 -0
- package/.agent/skills/api-patterns/security-testing.md +122 -0
- package/.agent/skills/api-patterns/trpc.md +41 -0
- package/.agent/skills/api-patterns/versioning.md +22 -0
- package/.agent/skills/app-builder/SKILL.md +75 -0
- package/.agent/skills/app-builder/agent-coordination.md +74 -0
- package/.agent/skills/app-builder/feature-building.md +53 -0
- package/.agent/skills/app-builder/project-detection.md +34 -0
- package/.agent/skills/app-builder/scaffolding.md +118 -0
- package/.agent/skills/app-builder/tech-stack.md +40 -0
- package/.agent/skills/app-builder/templates/SKILL.md +39 -0
- package/.agent/skills/app-builder/templates/astro-static/TEMPLATE.md +76 -0
- package/.agent/skills/app-builder/templates/chrome-extension/TEMPLATE.md +92 -0
- package/.agent/skills/app-builder/templates/cli-tool/TEMPLATE.md +88 -0
- package/.agent/skills/app-builder/templates/electron-desktop/TEMPLATE.md +88 -0
- package/.agent/skills/app-builder/templates/express-api/TEMPLATE.md +83 -0
- package/.agent/skills/app-builder/templates/flutter-app/TEMPLATE.md +90 -0
- package/.agent/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +90 -0
- package/.agent/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +122 -0
- package/.agent/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +122 -0
- package/.agent/skills/app-builder/templates/nextjs-static/TEMPLATE.md +169 -0
- package/.agent/skills/app-builder/templates/nuxt-app/TEMPLATE.md +134 -0
- package/.agent/skills/app-builder/templates/python-fastapi/TEMPLATE.md +83 -0
- package/.agent/skills/app-builder/templates/react-native-app/TEMPLATE.md +119 -0
- package/.agent/skills/architecture/SKILL.md +57 -0
- package/.agent/skills/architecture/context-discovery.md +43 -0
- package/.agent/skills/architecture/examples.md +94 -0
- package/.agent/skills/architecture/pattern-selection.md +68 -0
- package/.agent/skills/architecture/patterns-reference.md +50 -0
- package/.agent/skills/architecture/trade-off-analysis.md +77 -0
- package/.agent/skills/bash-linux/SKILL.md +201 -0
- package/.agent/skills/behavioral-modes/SKILL.md +264 -0
- package/.agent/skills/brainstorming/SKILL.md +164 -0
- package/.agent/skills/brainstorming/dynamic-questioning.md +359 -0
- package/.agent/skills/clean-code/SKILL.md +200 -0
- package/.agent/skills/code-review-checklist/SKILL.md +125 -0
- package/.agent/skills/database-design/SKILL.md +54 -0
- package/.agent/skills/database-design/database-selection.md +43 -0
- package/.agent/skills/database-design/indexing.md +39 -0
- package/.agent/skills/database-design/migrations.md +50 -0
- package/.agent/skills/database-design/optimization.md +36 -0
- package/.agent/skills/database-design/orm-selection.md +30 -0
- package/.agent/skills/database-design/schema-design.md +56 -0
- package/.agent/skills/database-design/scripts/schema_validator.py +172 -0
- package/.agent/skills/deployment-procedures/SKILL.md +241 -0
- package/.agent/skills/doc.md +177 -0
- package/.agent/skills/documentation-templates/SKILL.md +194 -0
- package/.agent/skills/frontend-design/SKILL.md +418 -0
- package/.agent/skills/frontend-design/animation-guide.md +331 -0
- package/.agent/skills/frontend-design/color-system.md +307 -0
- package/.agent/skills/frontend-design/decision-trees.md +418 -0
- package/.agent/skills/frontend-design/motion-graphics.md +306 -0
- package/.agent/skills/frontend-design/scripts/accessibility_checker.py +183 -0
- package/.agent/skills/frontend-design/scripts/ux_audit.py +727 -0
- package/.agent/skills/frontend-design/typography-system.md +345 -0
- package/.agent/skills/frontend-design/ux-psychology.md +1118 -0
- package/.agent/skills/frontend-design/visual-effects.md +383 -0
- package/.agent/skills/game-development/2d-games/SKILL.md +119 -0
- package/.agent/skills/game-development/3d-games/SKILL.md +135 -0
- package/.agent/skills/game-development/SKILL.md +167 -0
- package/.agent/skills/game-development/game-art/SKILL.md +185 -0
- package/.agent/skills/game-development/game-audio/SKILL.md +190 -0
- package/.agent/skills/game-development/game-design/SKILL.md +129 -0
- package/.agent/skills/game-development/mobile-games/SKILL.md +108 -0
- package/.agent/skills/game-development/multiplayer/SKILL.md +132 -0
- package/.agent/skills/game-development/pc-games/SKILL.md +144 -0
- package/.agent/skills/game-development/vr-ar/SKILL.md +123 -0
- package/.agent/skills/game-development/web-games/SKILL.md +150 -0
- package/.agent/skills/geo-fundamentals/SKILL.md +155 -0
- package/.agent/skills/geo-fundamentals/scripts/geo_checker.py +289 -0
- package/.agent/skills/i18n-localization/SKILL.md +154 -0
- package/.agent/skills/i18n-localization/scripts/i18n_checker.py +241 -0
- package/.agent/skills/intelligent-routing/SKILL.md +335 -0
- package/.agent/skills/lint-and-validate/SKILL.md +44 -0
- package/.agent/skills/lint-and-validate/scripts/lint_runner.py +184 -0
- package/.agent/skills/lint-and-validate/scripts/type_coverage.py +173 -0
- package/.agent/skills/mcp-builder/SKILL.md +176 -0
- package/.agent/skills/mobile-design/SKILL.md +394 -0
- package/.agent/skills/mobile-design/decision-trees.md +516 -0
- package/.agent/skills/mobile-design/mobile-backend.md +491 -0
- package/.agent/skills/mobile-design/mobile-color-system.md +420 -0
- package/.agent/skills/mobile-design/mobile-debugging.md +122 -0
- package/.agent/skills/mobile-design/mobile-design-thinking.md +355 -0
- package/.agent/skills/mobile-design/mobile-navigation.md +458 -0
- package/.agent/skills/mobile-design/mobile-performance.md +767 -0
- package/.agent/skills/mobile-design/mobile-testing.md +356 -0
- package/.agent/skills/mobile-design/mobile-typography.md +432 -0
- package/.agent/skills/mobile-design/platform-android.md +666 -0
- package/.agent/skills/mobile-design/platform-ios.md +561 -0
- package/.agent/skills/mobile-design/scripts/mobile_audit.py +670 -0
- package/.agent/skills/mobile-design/touch-psychology.md +537 -0
- package/.agent/skills/nextjs-react-expert/1-async-eliminating-waterfalls.md +311 -0
- package/.agent/skills/nextjs-react-expert/2-bundle-bundle-size-optimization.md +241 -0
- package/.agent/skills/nextjs-react-expert/3-server-server-side-performance.md +489 -0
- package/.agent/skills/nextjs-react-expert/4-client-client-side-data-fetching.md +263 -0
- package/.agent/skills/nextjs-react-expert/5-rerender-re-render-optimization.md +581 -0
- package/.agent/skills/nextjs-react-expert/6-rendering-rendering-performance.md +431 -0
- package/.agent/skills/nextjs-react-expert/7-js-javascript-performance.md +683 -0
- package/.agent/skills/nextjs-react-expert/8-advanced-advanced-patterns.md +149 -0
- package/.agent/skills/nextjs-react-expert/SKILL.md +286 -0
- package/.agent/skills/nextjs-react-expert/scripts/convert_rules.py +222 -0
- package/.agent/skills/nextjs-react-expert/scripts/react_performance_checker.py +252 -0
- package/.agent/skills/nodejs-best-practices/SKILL.md +333 -0
- package/.agent/skills/parallel-agents/SKILL.md +194 -0
- package/.agent/skills/performance-profiling/SKILL.md +149 -0
- package/.agent/skills/performance-profiling/scripts/lighthouse_audit.py +76 -0
- package/.agent/skills/plan-writing/SKILL.md +152 -0
- package/.agent/skills/powershell-windows/SKILL.md +166 -0
- package/.agent/skills/python-patterns/SKILL.md +441 -0
- package/.agent/skills/red-team-tactics/SKILL.md +203 -0
- package/.agent/skills/rust-pro/SKILL.md +190 -0
- package/.agent/skills/seo-fundamentals/SKILL.md +135 -0
- package/.agent/skills/seo-fundamentals/scripts/seo_checker.py +215 -0
- package/.agent/skills/server-management/SKILL.md +161 -0
- package/.agent/skills/systematic-debugging/SKILL.md +114 -0
- package/.agent/skills/tailwind-patterns/SKILL.md +269 -0
- package/.agent/skills/tdd-workflow/SKILL.md +149 -0
- package/.agent/skills/testing-patterns/SKILL.md +178 -0
- package/.agent/skills/testing-patterns/scripts/test_runner.py +219 -0
- package/.agent/skills/vulnerability-scanner/SKILL.md +276 -0
- package/.agent/skills/vulnerability-scanner/checklists.md +131 -0
- package/.agent/skills/vulnerability-scanner/scripts/security_scan.py +459 -0
- package/.agent/skills/web-design-guidelines/SKILL.md +57 -0
- package/.agent/skills/webapp-testing/SKILL.md +187 -0
- package/.agent/skills/webapp-testing/scripts/playwright_runner.py +173 -0
- package/.agent/workflows/brainstorm.md +113 -0
- package/.agent/workflows/create.md +59 -0
- package/.agent/workflows/debug.md +103 -0
- package/.agent/workflows/deploy.md +176 -0
- package/.agent/workflows/enhance.md +63 -0
- package/.agent/workflows/orchestrate.md +242 -0
- package/.agent/workflows/plan.md +89 -0
- package/.agent/workflows/preview.md +80 -0
- package/.agent/workflows/restore-localize-compat.md +525 -0
- package/.agent/workflows/status.md +86 -0
- package/.agent/workflows/test.md +144 -0
- package/.agent/workflows/ui-ux-pro-max.md +295 -0
- package/AGENT_FLOW.md +609 -0
- package/CHANGELOG.md +68 -0
- package/LICENSE +21 -0
- package/README.md +260 -0
- package/bin/adapters/base.js +63 -0
- package/bin/adapters/codex.js +391 -0
- package/bin/adapters/gemini.js +137 -0
- package/bin/ag-kit.js +1336 -0
- package/bin/core/builder.js +80 -0
- package/bin/core/generator.js +59 -0
- package/bin/core/resource-loader.js +64 -0
- package/bin/core/transformer.js +208 -0
- package/bin/interactive.js +65 -0
- package/bin/utils/atomic-writer.js +97 -0
- package/bin/utils/git-helper.js +68 -0
- package/bin/utils/managed-block.js +65 -0
- package/bin/utils/manifest.js +241 -0
- package/bin/utils.js +82 -0
- package/docs/codex-rules-template.md +36 -0
- package/docs/mapping-spec.md +68 -0
- package/docs/multi-target-adapter.md +80 -0
- package/docs/official/README.md +53 -0
- package/docs/official/antigravity/agent-modes-settings.md +64 -0
- package/docs/official/antigravity/rules-workflows.md +96 -0
- package/docs/official/antigravity/skills.md +147 -0
- package/docs/official/codex/agents-md.md +119 -0
- package/docs/official/codex/config-advanced.md +358 -0
- package/docs/official/codex/config-basic.md +141 -0
- package/docs/official/codex/config-reference.md +223 -0
- package/docs/official/codex/config-sample.md +216 -0
- package/docs/official/codex/mcp.md +107 -0
- package/docs/official/codex/rules.md +79 -0
- package/docs/official/codex/skills.md +114 -0
- package/docs/official/sources-index.md +32 -0
- package/docs/operations.md +145 -0
- package/docs/terminology-style-guide.md +69 -0
- package/package.json +51 -0
- package/scripts/postinstall-check.js +112 -0
|
@@ -0,0 +1,561 @@
|
|
|
1
|
+
# iOS 平台指南(iOS Platform Guidelines)
|
|
2
|
+
|
|
3
|
+
> Human Interface Guidelines(HIG)要点、iOS 设计惯例、SF Pro 排版与原生模式。
|
|
4
|
+
> **做 iPhone/iPad 必读。**
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## 1. Human Interface Guidelines 哲学
|
|
9
|
+
|
|
10
|
+
### 核心设计原则(Core Apple Design Principles)
|
|
11
|
+
|
|
12
|
+
```
|
|
13
|
+
CLARITY(清晰):
|
|
14
|
+
├── 文本在任何字号都清晰可读
|
|
15
|
+
├── 图标精确且清楚
|
|
16
|
+
├── 装饰克制且恰当
|
|
17
|
+
└── 功能性驱动设计
|
|
18
|
+
|
|
19
|
+
DEFERENCE(克制):
|
|
20
|
+
├── UI 帮助用户理解与操作
|
|
21
|
+
├── 内容占据屏幕主体
|
|
22
|
+
├── UI 不与内容争夺注意力
|
|
23
|
+
└── 半透明暗示更多内容
|
|
24
|
+
|
|
25
|
+
DEPTH(层次):
|
|
26
|
+
├── 清晰视觉层级表达结构
|
|
27
|
+
├── 过渡强调深度感
|
|
28
|
+
├── 触控揭示功能
|
|
29
|
+
└── 内容高于 UI
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### iOS 设计价值(iOS Design Values)
|
|
33
|
+
|
|
34
|
+
| 价值 | 实现方式 |
|
|
35
|
+
|------|----------|
|
|
36
|
+
| **Aesthetic Integrity** | 设计匹配功能(游戏 ≠ 生产力) |
|
|
37
|
+
| **Consistency** | 系统控件 + 熟悉模式 |
|
|
38
|
+
| **Direct Manipulation** | 触控直接作用于内容 |
|
|
39
|
+
| **Feedback** | 操作得到明确反馈 |
|
|
40
|
+
| **Metaphors** | 用现实隐喻帮助理解 |
|
|
41
|
+
| **User Control** | 用户发起操作且可取消 |
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## 2. iOS 排版(iOS Typography)
|
|
46
|
+
|
|
47
|
+
### SF Pro 字体家族
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
iOS 系统字体:
|
|
51
|
+
├── SF Pro Text:正文(< 20pt)
|
|
52
|
+
├── SF Pro Display:大标题(≥ 20pt)
|
|
53
|
+
├── SF Pro Rounded:更友好场景
|
|
54
|
+
├── SF Mono:代码/等宽数据
|
|
55
|
+
└── SF Compact:Apple Watch/小屏
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### iOS 字号体系(Dynamic Type)
|
|
59
|
+
|
|
60
|
+
| Style | Default Size | Weight | Usage |
|
|
61
|
+
|-------|--------------|--------|-------|
|
|
62
|
+
| **Large Title** | 34pt | Bold | 导航栏(滚动折叠) |
|
|
63
|
+
| **Title 1** | 28pt | Bold | 页面标题 |
|
|
64
|
+
| **Title 2** | 22pt | Bold | 分区标题 |
|
|
65
|
+
| **Title 3** | 20pt | Semibold | 子分区标题 |
|
|
66
|
+
| **Headline** | 17pt | Semibold | 强调正文 |
|
|
67
|
+
| **Body** | 17pt | Regular | 主体内容 |
|
|
68
|
+
| **Callout** | 16pt | Regular | 次要内容 |
|
|
69
|
+
| **Subhead** | 15pt | Regular | 辅助内容 |
|
|
70
|
+
| **Footnote** | 13pt | Regular | 注释、时间戳 |
|
|
71
|
+
| **Caption 1** | 12pt | Regular | 标注 |
|
|
72
|
+
| **Caption 2** | 11pt | Regular | 细小文本 |
|
|
73
|
+
|
|
74
|
+
### Dynamic Type 支持(必须)
|
|
75
|
+
|
|
76
|
+
```swift
|
|
77
|
+
// ❌ 错误:固定字号
|
|
78
|
+
Text("Hello")
|
|
79
|
+
.font(.system(size: 17))
|
|
80
|
+
|
|
81
|
+
// ✅ 正确:Dynamic Type
|
|
82
|
+
Text("Hello")
|
|
83
|
+
.font(.body) // 随用户设置缩放
|
|
84
|
+
|
|
85
|
+
// React Native 对应
|
|
86
|
+
<Text style={{ fontSize: 17 }}> // ❌ 固定
|
|
87
|
+
<Text style={styles.body}> // 使用动态字号系统
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### 字重使用(Font Weight Usage)
|
|
91
|
+
|
|
92
|
+
| 字重 | iOS 常量 | 场景 |
|
|
93
|
+
|------|----------|------|
|
|
94
|
+
| Regular (400) | `.regular` | 正文 |
|
|
95
|
+
| Medium (500) | `.medium` | 按钮、强调 |
|
|
96
|
+
| Semibold (600) | `.semibold` | 小标题 |
|
|
97
|
+
| Bold (700) | `.bold` | 标题、关键信息 |
|
|
98
|
+
| Heavy (800) | `.heavy` | 很少使用,营销场景 |
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
## 3. iOS 颜色系统(iOS Color System)
|
|
103
|
+
|
|
104
|
+
### 系统语义色(System Colors)
|
|
105
|
+
|
|
106
|
+
```
|
|
107
|
+
使用语义色以自动适配暗色模式:
|
|
108
|
+
|
|
109
|
+
Primary:
|
|
110
|
+
├── .label → 主文本
|
|
111
|
+
├── .secondaryLabel → 次级文本
|
|
112
|
+
├── .tertiaryLabel → 第三级文本
|
|
113
|
+
├── .quaternaryLabel → 水印
|
|
114
|
+
|
|
115
|
+
Backgrounds:
|
|
116
|
+
├── .systemBackground → 主背景
|
|
117
|
+
├── .secondarySystemBackground → 分组内容
|
|
118
|
+
├── .tertiarySystemBackground → 浮层内容
|
|
119
|
+
|
|
120
|
+
Fills:
|
|
121
|
+
├── .systemFill → 大块形状
|
|
122
|
+
├── .secondarySystemFill → 中块形状
|
|
123
|
+
├── .tertiarySystemFill → 小块形状
|
|
124
|
+
├── .quaternarySystemFill → 极轻形状
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### 系统强调色(System Accent Colors)
|
|
128
|
+
|
|
129
|
+
| 颜色 | Light Mode | Dark Mode | 用途 |
|
|
130
|
+
|------|------------|-----------|------|
|
|
131
|
+
| Blue | #007AFF | #0A84FF | 链接/高亮/默认 tint |
|
|
132
|
+
| Green | #34C759 | #30D158 | 成功/正向 |
|
|
133
|
+
| Red | #FF3B30 | #FF453A | 错误/破坏性 |
|
|
134
|
+
| Orange | #FF9500 | #FF9F0A | 警告 |
|
|
135
|
+
| Yellow | #FFCC00 | #FFD60A | 注意 |
|
|
136
|
+
| Purple | #AF52DE | #BF5AF2 | 特殊功能 |
|
|
137
|
+
| Pink | #FF2D55 | #FF375F | 收藏/情感 |
|
|
138
|
+
| Teal | #5AC8FA | #64D2FF | 信息提示 |
|
|
139
|
+
|
|
140
|
+
### 暗色模式注意事项
|
|
141
|
+
|
|
142
|
+
```
|
|
143
|
+
iOS 暗色模式不是简单反色:
|
|
144
|
+
|
|
145
|
+
LIGHT MODE: DARK MODE:
|
|
146
|
+
├── 白色背景 ├── 纯黑或近黑背景
|
|
147
|
+
├── 高饱和色 ├── 低饱和色
|
|
148
|
+
├── 黑色文本 ├── 浅色文本
|
|
149
|
+
└── 阴影 └── 光晕或无阴影
|
|
150
|
+
|
|
151
|
+
规则:始终使用语义色自动适配。
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
---
|
|
155
|
+
|
|
156
|
+
## 4. iOS 布局与间距(iOS Layout & Spacing)
|
|
157
|
+
|
|
158
|
+
### 安全区(Safe Areas)
|
|
159
|
+
|
|
160
|
+
```
|
|
161
|
+
┌─────────────────────────────────────┐
|
|
162
|
+
│░░░░░░░░░░░ Status Bar ░░░░░░░░░░░░░│ ← 顶部安全区
|
|
163
|
+
├─────────────────────────────────────┤
|
|
164
|
+
│ │
|
|
165
|
+
│ │
|
|
166
|
+
│ Safe Content Area │
|
|
167
|
+
│ │
|
|
168
|
+
│ │
|
|
169
|
+
├─────────────────────────────────────┤
|
|
170
|
+
│░░░░░░░░░ Home Indicator ░░░░░░░░░░░│ ← 底部安全区
|
|
171
|
+
└─────────────────────────────────────┘
|
|
172
|
+
|
|
173
|
+
规则:不要把可交互内容放到 unsafe 区域。
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
### 标准边距与内边距(Standard Margins & Padding)
|
|
177
|
+
|
|
178
|
+
| 元素 | Margin | 说明 |
|
|
179
|
+
|------|--------|------|
|
|
180
|
+
| 屏幕边缘 → 内容 | 16pt | 标准左右边距 |
|
|
181
|
+
| 分组表格区块 | 上下 16pt | 留呼吸感 |
|
|
182
|
+
| 列表项 padding | 水平 16pt | 标准 cell padding |
|
|
183
|
+
| 卡片内边距 | 16pt | 卡片内容 |
|
|
184
|
+
| 按钮内边距 | 12pt 垂直 / 16pt 水平 | 最小值 |
|
|
185
|
+
|
|
186
|
+
### iOS 栅格(iOS Grid System)
|
|
187
|
+
|
|
188
|
+
```
|
|
189
|
+
iPhone Grid(Standard):
|
|
190
|
+
├── 左右边距 16pt
|
|
191
|
+
├── 最小间距 8pt
|
|
192
|
+
├── 内容按 8pt 倍数排列
|
|
193
|
+
|
|
194
|
+
iPhone Grid(Compact):
|
|
195
|
+
├── 左右边距 8pt(必要时)
|
|
196
|
+
├── 最小间距 4pt
|
|
197
|
+
|
|
198
|
+
iPad Grid:
|
|
199
|
+
├── 左右边距 20pt(或更多)
|
|
200
|
+
├── 建议多栏布局
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
---
|
|
204
|
+
|
|
205
|
+
## 5. iOS 导航模式(iOS Navigation Patterns)
|
|
206
|
+
|
|
207
|
+
### 导航类型(Navigation Types)
|
|
208
|
+
|
|
209
|
+
| 模式 | 场景 | 实现 |
|
|
210
|
+
|------|------|------|
|
|
211
|
+
| **Tab Bar** | 3-5 顶层入口 | 底部常驻 |
|
|
212
|
+
| **Navigation Controller** | 层级深入 | Stack + 返回按钮 |
|
|
213
|
+
| **Modal** | 聚焦任务/打断 | Sheet 或全屏 |
|
|
214
|
+
| **Sidebar** | iPad 多栏 | 左侧边栏 |
|
|
215
|
+
|
|
216
|
+
### Tab Bar 指南
|
|
217
|
+
|
|
218
|
+
```
|
|
219
|
+
┌─────────────────────────────────────┐
|
|
220
|
+
│ │
|
|
221
|
+
│ Content Area │
|
|
222
|
+
│ │
|
|
223
|
+
├─────────────────────────────────────┤
|
|
224
|
+
│ 🏠 🔍 ➕ ❤️ 👤 │ ← Tab bar (49pt height)
|
|
225
|
+
│ Home Search New Saved Profile │
|
|
226
|
+
└─────────────────────────────────────┘
|
|
227
|
+
|
|
228
|
+
规则:
|
|
229
|
+
├── 最多 3-5 项
|
|
230
|
+
├── 图标:SF Symbols 或自定义(25×25pt)
|
|
231
|
+
├── 文本:必须显示(无障碍)
|
|
232
|
+
├── 激活态:填充图标 + tint 色
|
|
233
|
+
└── Tab bar 始终可见(不要随滚动隐藏)
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
### Navigation Bar 指南
|
|
237
|
+
|
|
238
|
+
```
|
|
239
|
+
┌─────────────────────────────────────┐
|
|
240
|
+
│ < Back Page Title Edit │ ← Navigation bar (44pt)
|
|
241
|
+
├─────────────────────────────────────┤
|
|
242
|
+
│ │
|
|
243
|
+
│ Content Area │
|
|
244
|
+
│ │
|
|
245
|
+
└─────────────────────────────────────┘
|
|
246
|
+
|
|
247
|
+
规则:
|
|
248
|
+
├── 返回按钮:系统 chevron + 上一页标题(或 “Back”)
|
|
249
|
+
├── 标题:居中 + 动态字号
|
|
250
|
+
├── 右侧操作:最多 2 个
|
|
251
|
+
├── 大标题:可随滚动折叠
|
|
252
|
+
└── 优先文字按钮而非纯图标
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
### Modal 展示方式
|
|
256
|
+
|
|
257
|
+
| 样式 | 场景 | 视觉 |
|
|
258
|
+
|------|------|------|
|
|
259
|
+
| **Sheet(默认)** | 次要任务 | 卡片上滑,父级仍可见 |
|
|
260
|
+
| **Full Screen** | 沉浸式任务 | 覆盖全屏 |
|
|
261
|
+
| **Popover** | iPad 快速信息 | 有箭头气泡 |
|
|
262
|
+
| **Alert** | 关键打断 | 居中对话框 |
|
|
263
|
+
| **Action Sheet** | 上下文操作 | 底部选项 |
|
|
264
|
+
|
|
265
|
+
### 手势(Gestures)
|
|
266
|
+
|
|
267
|
+
| 手势 | iOS 约定 |
|
|
268
|
+
|------|----------|
|
|
269
|
+
| **边缘左滑** | 返回上一层 |
|
|
270
|
+
| **下拉(sheet)** | 关闭 modal |
|
|
271
|
+
| **长按** | 上下文菜单 |
|
|
272
|
+
| **深按** | Peek/Pop(旧版) |
|
|
273
|
+
| **双指滑动** | 内嵌滚动 |
|
|
274
|
+
|
|
275
|
+
---
|
|
276
|
+
|
|
277
|
+
## 6. iOS 组件(iOS Components)
|
|
278
|
+
|
|
279
|
+
### Buttons
|
|
280
|
+
|
|
281
|
+
```
|
|
282
|
+
按钮样式(UIKit/SwiftUI):
|
|
283
|
+
|
|
284
|
+
┌──────────────────────────────┐
|
|
285
|
+
│ Tinted │ ← 主操作(填充)
|
|
286
|
+
├──────────────────────────────┤
|
|
287
|
+
│ Bordered │ ← 次操作(描边)
|
|
288
|
+
├──────────────────────────────┤
|
|
289
|
+
│ Plain │ ← 三级操作(文字)
|
|
290
|
+
└──────────────────────────────┘
|
|
291
|
+
|
|
292
|
+
尺寸:
|
|
293
|
+
├── Mini:狭小空间
|
|
294
|
+
├── Small:紧凑 UI
|
|
295
|
+
├── Medium:行内操作
|
|
296
|
+
├── Large:主 CTA(高度 ≥ 44pt)
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
### Lists & Tables
|
|
300
|
+
|
|
301
|
+
```
|
|
302
|
+
列表样式:
|
|
303
|
+
|
|
304
|
+
.plain → 无分隔线,边到边
|
|
305
|
+
.insetGrouped → 圆角卡片(iOS 14+ 默认)
|
|
306
|
+
.grouped → 全宽分组
|
|
307
|
+
.sidebar → iPad 侧栏导航
|
|
308
|
+
|
|
309
|
+
Cell Accessories:
|
|
310
|
+
├── Disclosure indicator (>) → 进入详情
|
|
311
|
+
├── Detail button (i) → 信息页不跳转
|
|
312
|
+
├── Checkmark (✓) → 选择
|
|
313
|
+
├── Reorder (≡) → 拖拽排序
|
|
314
|
+
└── Delete (-) → 侧滑/编辑删除
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
### Text Fields
|
|
318
|
+
|
|
319
|
+
```
|
|
320
|
+
iOS Text Field Anatomy:
|
|
321
|
+
|
|
322
|
+
┌─────────────────────────────────────┐
|
|
323
|
+
│ 🔍 Search... ✕ │
|
|
324
|
+
└─────────────────────────────────────┘
|
|
325
|
+
↑ ↑
|
|
326
|
+
Leading icon Clear button
|
|
327
|
+
|
|
328
|
+
边框:圆角矩形
|
|
329
|
+
高度:≥ 36pt
|
|
330
|
+
Placeholder:secondary text color
|
|
331
|
+
Clear button:有文本时显示
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
### Segmented Controls
|
|
335
|
+
|
|
336
|
+
```
|
|
337
|
+
使用场景:
|
|
338
|
+
├── 2-5 个相关选项
|
|
339
|
+
├── 内容筛选
|
|
340
|
+
├── 视图切换
|
|
341
|
+
|
|
342
|
+
┌───────┬───────┬───────┐
|
|
343
|
+
│ All │ Active│ Done │
|
|
344
|
+
└───────┴───────┴───────┘
|
|
345
|
+
|
|
346
|
+
规则:
|
|
347
|
+
├── 等宽分段
|
|
348
|
+
├── 仅文本或仅图标(不要混用)
|
|
349
|
+
├── 最多 5 段
|
|
350
|
+
└── 更复杂时考虑 Tabs
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
---
|
|
354
|
+
|
|
355
|
+
## 7. iOS 特有模式(iOS Specific Patterns)
|
|
356
|
+
|
|
357
|
+
### 下拉刷新(Pull to Refresh)
|
|
358
|
+
|
|
359
|
+
```
|
|
360
|
+
原生 UIRefreshControl:
|
|
361
|
+
├── 下拉到阈值 → 显示 spinner
|
|
362
|
+
├── 松手 → 触发刷新
|
|
363
|
+
├── 加载中 → spinner 旋转
|
|
364
|
+
├── 完成 → spinner 消失
|
|
365
|
+
|
|
366
|
+
规则:使用原生 UIRefreshControl,不要自造。
|
|
367
|
+
```
|
|
368
|
+
|
|
369
|
+
### Swipe Actions
|
|
370
|
+
|
|
371
|
+
```
|
|
372
|
+
iOS 侧滑操作:
|
|
373
|
+
|
|
374
|
+
← Swipe Left(破坏性) Swipe Right(建设性) →
|
|
375
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
376
|
+
│ List Item Content │
|
|
377
|
+
└─────────────────────────────────────────────────────────────┘
|
|
378
|
+
|
|
379
|
+
左滑:Archive/Delete/Flag
|
|
380
|
+
右滑:Pin/Star/Mark as Read
|
|
381
|
+
|
|
382
|
+
Full swipe:触发首个动作
|
|
383
|
+
```
|
|
384
|
+
|
|
385
|
+
### Context Menus
|
|
386
|
+
|
|
387
|
+
```
|
|
388
|
+
长按 → 弹出上下文菜单
|
|
389
|
+
|
|
390
|
+
┌─────────────────────────────┐
|
|
391
|
+
│ Preview Card │
|
|
392
|
+
├─────────────────────────────┤
|
|
393
|
+
│ 📋 Copy │
|
|
394
|
+
│ 📤 Share │
|
|
395
|
+
│ ➕ Add to... │
|
|
396
|
+
├─────────────────────────────┤
|
|
397
|
+
│ 🗑️ Delete (Red) │
|
|
398
|
+
└─────────────────────────────┘
|
|
399
|
+
|
|
400
|
+
规则:
|
|
401
|
+
├── Preview:显示放大内容
|
|
402
|
+
├── Actions:与内容相关
|
|
403
|
+
├── Destructive:放最后且标红
|
|
404
|
+
└── 最多约 8 项(更多可滚动)
|
|
405
|
+
```
|
|
406
|
+
|
|
407
|
+
### Sheets & Half-Sheets
|
|
408
|
+
|
|
409
|
+
```
|
|
410
|
+
iOS 15+ Sheets:
|
|
411
|
+
|
|
412
|
+
┌─────────────────────────────────────┐
|
|
413
|
+
│ │
|
|
414
|
+
│ Parent View (dimmed) │
|
|
415
|
+
│ │
|
|
416
|
+
├─────────────────────────────────────┤
|
|
417
|
+
│ ═══ (Grabber) │ ← 拖动调整高度
|
|
418
|
+
│ │
|
|
419
|
+
│ Sheet Content │
|
|
420
|
+
│ │
|
|
421
|
+
│ │
|
|
422
|
+
└─────────────────────────────────────┘
|
|
423
|
+
|
|
424
|
+
Detents:
|
|
425
|
+
├── .medium → 半屏
|
|
426
|
+
├── .large → 全屏(含 safe area)
|
|
427
|
+
├── Custom → 指定高度
|
|
428
|
+
```
|
|
429
|
+
|
|
430
|
+
---
|
|
431
|
+
|
|
432
|
+
## 8. SF Symbols
|
|
433
|
+
|
|
434
|
+
### 使用指南(Usage Guidelines)
|
|
435
|
+
|
|
436
|
+
```
|
|
437
|
+
SF Symbols:苹果官方图标库(5000+)
|
|
438
|
+
|
|
439
|
+
Weights:应匹配文本字重
|
|
440
|
+
├── Ultralight / Thin / Light
|
|
441
|
+
├── Regular / Medium / Semibold
|
|
442
|
+
├── Bold / Heavy / Black
|
|
443
|
+
|
|
444
|
+
Scales:
|
|
445
|
+
├── .small → 小文本内联
|
|
446
|
+
├── .medium → 标准 UI
|
|
447
|
+
├── .large → 强调/独立图标
|
|
448
|
+
```
|
|
449
|
+
|
|
450
|
+
### Symbol 配置(Symbol Configurations)
|
|
451
|
+
|
|
452
|
+
```swift
|
|
453
|
+
// SwiftUI
|
|
454
|
+
Image(systemName: "star.fill")
|
|
455
|
+
.font(.title2)
|
|
456
|
+
.foregroundStyle(.yellow)
|
|
457
|
+
|
|
458
|
+
// 渲染模式
|
|
459
|
+
Image(systemName: "heart.fill")
|
|
460
|
+
.symbolRenderingMode(.multicolor)
|
|
461
|
+
|
|
462
|
+
// 动画(iOS 17+)
|
|
463
|
+
Image(systemName: "checkmark.circle")
|
|
464
|
+
.symbolEffect(.bounce)
|
|
465
|
+
```
|
|
466
|
+
|
|
467
|
+
### 最佳实践(Symbol Best Practices)
|
|
468
|
+
|
|
469
|
+
| 指南 | 实现方式 |
|
|
470
|
+
|------|----------|
|
|
471
|
+
| 匹配文本字重 | Symbol weight = font weight |
|
|
472
|
+
| 使用标准符号 | 用户更易识别 |
|
|
473
|
+
| 多色有意义时用 | 非装饰 |
|
|
474
|
+
| 旧系统提供兜底 | 检查可用性 |
|
|
475
|
+
|
|
476
|
+
---
|
|
477
|
+
|
|
478
|
+
## 9. iOS 无障碍(iOS Accessibility)
|
|
479
|
+
|
|
480
|
+
### VoiceOver 要求
|
|
481
|
+
|
|
482
|
+
```
|
|
483
|
+
每个交互元素必须:
|
|
484
|
+
├── Accessibility label(是什么)
|
|
485
|
+
├── Accessibility hint(做什么,可选)
|
|
486
|
+
├── Accessibility traits(button/link 等)
|
|
487
|
+
└── Accessibility value(当前状态)
|
|
488
|
+
|
|
489
|
+
SwiftUI:
|
|
490
|
+
.accessibilityLabel("Play")
|
|
491
|
+
.accessibilityHint("Plays the selected track")
|
|
492
|
+
|
|
493
|
+
React Native:
|
|
494
|
+
accessibilityLabel="Play"
|
|
495
|
+
accessibilityHint="Plays the selected track"
|
|
496
|
+
accessibilityRole="button"
|
|
497
|
+
```
|
|
498
|
+
|
|
499
|
+
### Dynamic Type 缩放
|
|
500
|
+
|
|
501
|
+
```
|
|
502
|
+
必须支持 Dynamic Type
|
|
503
|
+
|
|
504
|
+
用户可设置:
|
|
505
|
+
├── xSmall → 14pt body
|
|
506
|
+
├── Small → 15pt body
|
|
507
|
+
├── Medium → 16pt body
|
|
508
|
+
├── Large(默认) → 17pt body
|
|
509
|
+
├── xLarge → 19pt body
|
|
510
|
+
├── xxLarge → 21pt body
|
|
511
|
+
├── xxxLarge → 23pt body
|
|
512
|
+
├── Accessibility sizes → 最高 53pt
|
|
513
|
+
|
|
514
|
+
你的 App 必须在所有字号下正常排版。
|
|
515
|
+
```
|
|
516
|
+
|
|
517
|
+
### Reduce Motion
|
|
518
|
+
|
|
519
|
+
```
|
|
520
|
+
尊重动态偏好:
|
|
521
|
+
|
|
522
|
+
@Environment(\.accessibilityReduceMotion) var reduceMotion
|
|
523
|
+
|
|
524
|
+
if reduceMotion {
|
|
525
|
+
// 使用即时过渡
|
|
526
|
+
} else {
|
|
527
|
+
// 允许动画
|
|
528
|
+
}
|
|
529
|
+
|
|
530
|
+
React Native:
|
|
531
|
+
import { AccessibilityInfo } from 'react-native';
|
|
532
|
+
AccessibilityInfo.isReduceMotionEnabled()
|
|
533
|
+
```
|
|
534
|
+
|
|
535
|
+
---
|
|
536
|
+
|
|
537
|
+
## 10. iOS 检查清单(iOS Checklist)
|
|
538
|
+
|
|
539
|
+
### 每个 iOS 页面前
|
|
540
|
+
|
|
541
|
+
- [ ] 使用 SF Pro 或 SF Symbols
|
|
542
|
+
- [ ] 支持 Dynamic Type
|
|
543
|
+
- [ ] 遵守 Safe Areas
|
|
544
|
+
- [ ] 导航符合 HIG(返回手势可用)
|
|
545
|
+
- [ ] Tab bar 项 ≤ 5
|
|
546
|
+
- [ ] 触控目标 ≥ 44pt
|
|
547
|
+
|
|
548
|
+
### iOS 发布前
|
|
549
|
+
|
|
550
|
+
- [ ] 暗色模式已测试
|
|
551
|
+
- [ ] 全字号测试(Accessibility Inspector)
|
|
552
|
+
- [ ] VoiceOver 已测试
|
|
553
|
+
- [ ] 边缘滑动返回可用
|
|
554
|
+
- [ ] 键盘遮挡处理
|
|
555
|
+
- [ ] 适配 Notch/Dynamic Island
|
|
556
|
+
- [ ] Home indicator 区域处理
|
|
557
|
+
- [ ] 可用原生组件尽量用原生
|
|
558
|
+
|
|
559
|
+
---
|
|
560
|
+
|
|
561
|
+
> **记住(Remember)**:iOS 用户对 HIG 非常敏感,偏离原生模式会被认为“坏掉”。不确定时,优先使用原生组件。
|