Перейти к содержимому

Cross-Platform Design System

Версия: 1.0 | Дата: 2025-02 Источники: Material Design 3, Android Design Guidelines, Apple Human Interface Guidelines Назначение: Единая система AI-оценки дизайн-макетов для iOS и Android


  1. Философия и принципы
  2. Единицы измерения
  3. Touch Targets & Accessibility
  4. Typography
  5. Color System
  6. Layout & Spacing
  7. Navigation
  8. Components
  9. Modals & Overlays
  10. Icons
  11. Motion & Animation
  12. Dark Mode
  13. Platform Detection
  14. Universal Checklist
  15. Platform-Specific Checklist
  16. Evaluation Scoring

ПринципОписание
ClarityКонтент понятен, иерархия очевидна
ConsistencyЕдинообразие в рамках приложения и платформы
AccessibilityДоступность для всех пользователей
FeedbackСистема отвечает на действия пользователя
User ControlПользователь контролирует взаимодействие
АспектiOS (Apple HIG)Android (Material Design)
ФилософияClarity, Deference, DepthMaterial as metaphor, Bold/Graphic/Intentional
МетафораСтекло, слои, полупрозрачностьФизический материал, поверхности, elevation
ГлубинаBlur, vibrancy, translucencyShadows, elevation, tonal surfaces
ДвижениеЕстественное, пружинноеФизически обоснованное, easing curves
БрендингСдержанный, системный стильВыраженный через Dynamic Color

При оценке макета сначала определи целевую платформу, затем применяй соответствующие guidelines. Если платформа не указана — проверяй по универсальным критериям.


ПлатформаЕдиницаОписаниеБазовая плотность
iOSpt (points)Логическая единица163 PPI (@1x)
Androiddp (density-independent pixels)Логическая единица160 DPI (mdpi)
Webpx (CSS pixels)Логическая единица96 DPI
1 pt (iOS) ≈ 1 dp (Android) ≈ 1 px (CSS at 1x)

Scale Factors:

iOSAndroidMultiplier
@1xmdpi
@2xxhdpi
@3xxxhdpi
xxxhdpi

Для AI-оценки: считать pt и dp эквивалентными. Все спецификации в этом документе используют pt/dp как взаимозаменяемые единицы.


ПлатформаMinimum SizeRecommendedКритично
iOS44×44 pt≥44×44 pt❌ < 44 pt
Android48×48 dp≥48×48 dp❌ < 48 dp
WCAG AAA44×44 px
WCAG AA24×24 px

Рекомендация: использовать 48×48 pt/dp как универсальный минимум. Это удовлетворяет требованиям обеих платформ.

ПлатформаMinimum Spacing
iOS8 pt
Android8 dp
Universal≥8 pt/dp
ТребованиеiOSAndroidUniversal
Screen ReaderVoiceOverTalkBack✅ Required
Text ScalingDynamic TypeFont Scale✅ Required
Reduce MotionReduce MotionRemove Animations✅ Required
High ContrastIncrease ContrastHigh Contrast✅ Required
Color IndependenceНе полагаться только на цвет
КонтентWCAG AAWCAG AAAiOSAndroid
Normal text4.5:17:14.5:14.5:1
Large text (≥18pt/24px bold)3:14.5:13:13:1
UI Components3:13:13:1
Non-text (icons)3:13:13:1

Universal Standard: 4.5:1 для текста, 3:1 для UI элементов


ПлатформаPrimary FontMonospaceSerif
iOSSF Pro (Text/Display)SF MonoNew York
AndroidRobotoRoboto MonoNoto Serif
RoleiOS Text StyleiOS SizeAndroid StyleAndroid Size
Display LargeDisplay Large57 sp
Display MediumDisplay Medium45 sp
Display SmallDisplay Small36 sp
Large TitleLarge Title34 ptHeadline Large32 sp
Title 1Title 128 ptHeadline Medium28 sp
Title 2Title 222 ptHeadline Small24 sp
Title 3Title 320 ptTitle Large22 sp
HeadlineHeadline17 pt SemiTitle Medium16 sp Medium
BodyBody17 ptBody Large16 sp
Body 2Callout16 ptBody Medium14 sp
SubheadSubheadline15 ptBody Small12 sp
FootnoteFootnote13 ptLabel Large14 sp
Caption 1Caption 112 ptLabel Medium12 sp
Caption 2Caption 211 ptLabel Small11 sp
ПравилоiOSAndroidUniversal
Minimum text size11 pt12 sp (рекомендуется)11-12 pt/sp
Body text17 pt14-16 sp14-17 pt/sp
Primary actions17 pt Semibold14 sp Medium14-17 pt/sp Medium+
Line height~1.3×1.2-1.5×1.2-1.5×
Max line length~80 chars40-60 chars40-80 chars
ПлатформаМеханизмДиапазон
iOSDynamic TypexSmall → AX5 (7+5 sizes)
AndroidFont Scale0.85× → 2.0×

Universal: Дизайн должен поддерживать увеличение текста минимум до 200%


RoleiOS NameAndroid NameUsage
PrimaryTint ColorPrimaryКлючевые элементы, акценты
On PrimaryOn PrimaryКонтент на Primary
SecondarySecondaryМенее важные элементы
ErrorsystemRedErrorОшибки, деструктивные действия
SuccesssystemGreenУспех, подтверждение
WarningsystemOrangeПредупреждения
BackgroundsystemBackgroundSurfaceОсновной фон
SurfacesecondarySystemBackgroundSurface ContainerКарточки, elevated surfaces
On SurfacelabelOn SurfaceОсновной текст
OutlineseparatorOutlineГраницы, разделители
LeveliOS LightiOS DarkAndroid LightAndroid Dark
Base#FFFFFF#000000#FEF7FF#141218
Level 1#F2F2F7#1C1C1ESurface ContainerSurface Container
Level 2#FFFFFF#2C2C2ESurface Container HighSurface Container High
LeveliOS LightiOS DarkAndroid LightAndroid Dark
Primary#000000#FFFFFFOn SurfaceOn Surface
Secondary60% opacity60% opacityOn Surface VariantOn Surface Variant
Tertiary30% opacity30% opacity
Disabled30% opacity30% opacity38% opacity38% opacity
ColoriOS LightiOS DarkM3 Equivalent
Blue#007AFF#0A84FFPrimary (customizable)
Green#34C759#30D158
Red#FF3B30#FF453AError
Orange#FF9500#FF9F0A
Yellow#FFCC00#FFD60A
Gray#8E8E93#8E8E93Outline

Android поддерживает Dynamic Color на основе обоев пользователя. iOS не имеет аналогичной системы — используется фиксированный Tint Color.

Universal: Использовать semantic color roles, не hardcoded HEX values


ПараметрiOSAndroid
Base unitНет строгой сетки8 dp (4 dp для мелких)
Columns (Phone)Fluid4 columns
Columns (Tablet)Fluid8-12 columns
Gutter16-24 dp
КонтекстiOSAndroidUniversal
Screen edge (Phone)16 pt16 dp16 pt/dp
Screen edge (Tablet)20+ pt24-32 dp24 pt/dp
Content spacing8-16 pt8-16 dp8-16 pt/dp
Section spacing20-35 pt24-32 dp24 pt/dp
AreaiPhone (Dynamic Island)iPhone (Notch)
Top59 pt47 pt
Bottom34 pt34 pt
Left/Right (Portrait)0 pt0 pt
AreaGesture Nav3-Button Nav
Top (Status Bar)24 dp24 dp
Bottom (Nav Bar)48 dp (gesture)48 dp
Bottom (Gesture Handle)20-24 dp
4 pt/dp — Micro (внутри компонентов)
8 pt/dp — Small (между связанными элементами)
12 pt/dp — Medium
16 pt/dp — Standard (основной spacing)
24 pt/dp — Large (между секциями)
32 pt/dp — XL
48 pt/dp — XXL (major sections)

Universal Rule: Все spacing кратны 4 или 8


PatterniOSAndroid
Tab-basedTab Bar (bottom)Navigation Bar (bottom)
HierarchicalNavigation ControllerNavigation Drawer + Back
SidebarSidebar (iPad)Navigation Rail / Drawer
ModalSheets, ModalsBottom Sheets, Dialogs
ПараметрiOS Tab BarAndroid Nav Bar
Height49 pt80 dp
With Home Indicator83 pt
Max items53-5
Icon size25-28 pt24 dp
Label size10 pt12 sp
Icon styleFilled (selected)Filled (iOS 15+)
BackgroundTranslucent blurSolid/Surface
IndicatorNone (color change)Pill shape
ПараметрiOS Navigation BarAndroid Top App Bar
Height (small)44 pt64 dp
Height (large)96 pt152 dp (Large)
Title positionCenter (small), Left (large)Left
Title size (small)17 pt Semibold22 sp
Title size (large)34 pt Bold28 sp
Back buttonChevron + labelArrow only
BackgroundTranslucent blurSolid/Surface
Screen WidthiOSAndroid
Compact (<600dp)Tab BarNavigation Bar
Medium (600-839dp)Tab Bar / SidebarNavigation Rail
Expanded (≥840dp)SidebarNavigation Drawer
ПлатформаGestureButton
iOSSwipe from left edgeTop-left chevron
AndroidSwipe from left/right edgeTop-left arrow, System back

ПараметрiOSAndroidUniversal Min
Height (standard)44-50 pt40 dp40 pt/dp
Touch target44×44 pt48×48 dp44-48 pt/dp
Corner radius10-14 pt20 dp (full)Varies
Text size17 pt14 sp14-17 pt/sp
Horizontal padding16 pt24 dp16-24 pt/dp
StyleiOSAndroid M3
Primary/CTAFilled ButtonFilled Button
SecondaryGray/Tinted ButtonTonal Button
TertiaryPlain/Text ButtonText Button
OutlinedOutlined Button
DestructiveRed text/fill
ПараметрiOSAndroidUniversal
Height44 pt56 dp44-56 pt/dp
Corner radius10 pt4 dp (outlined)Varies
Text size17 pt16 sp16-17 pt/sp
LabelPlaceholder onlyFloating label
Padding12 pt16 dp12-16 pt/dp
ПараметрiOS SwitchAndroid Switch
Size51×31 pt52×32 dp
Track radius15.5 pt16 dp
Thumb size27 pt24 dp (off) / 28 dp (on)
On colorsystemGreenPrimary
Off colorsystemGraySurface Variant
ПараметрiOSAndroidUniversal Min
Row height (min)44 pt48-88 dp44 pt/dp
Row height (standard)44 pt56 dp (one-line)48-56 pt/dp
Leading padding16 pt16 dp16 pt/dp
Trailing padding16 pt24 dp16-24 pt/dp
Separator inset16 pt (or icon+16)Full width
Divider height0.5 pt1 dp0.5-1 pt/dp
ПараметрiOSAndroidUniversal
Corner radius10-16 pt12 dp10-16 pt/dp
Elevation/ShadowSubtle shadow1-3 dp elevationVaries
Padding16 pt16 dp16 pt/dp
BackgroundsecondarySystemBackgroundSurface Container
ПараметрiOSAndroid
Height~32 pt (custom)32 dp
Corner radius8-16 pt8 dp
Text size13-15 pt14 sp
Horizontal padding12 pt16 dp
ComponentiOSAndroidUniversal Min
Button height44-50 pt40 dp40 pt/dp
FAB56 dp56 dp
FAB Small40 dp40 dp
Text Field44 pt56 dp44 pt/dp
Switch51×31 pt52×32 dp~52×32
Segmented Control32 pt48 dp32-48
Slider thumb28 pt20 dp20-28
Checkbox18×18 dp18 dp
Radio20×20 dp20 dp
List row44+ pt48-88 dp44 pt/dp
Nav Bar (top)44 pt64 dp44-64
Tab Bar / Nav Bar (bottom)49 pt (83 w/home)80 dp49-80

TypeiOSAndroid
AlertAlertAlert Dialog
ConfirmationAlert with actionsConfirmation Dialog
Action ListAction SheetBottom Sheet
Form/TaskSheet (Page/Form)Full-screen Dialog / Bottom Sheet
Info popupPopover (iPad)Menu / Tooltip
ПараметрiOS SheetAndroid Bottom Sheet
Corner radius~10 pt (top)28 dp (top)
Drag indicator36×5 pt32×4 dp
DetentsMedium (~50%), LargeCollapsed, Half, Expanded
ScrimBlack translucentBlack 32% opacity
DismissSwipe downSwipe down, tap scrim
ПараметрiOS AlertAndroid Dialog
Width270 pt280-560 dp
Corner radius14 pt28 dp
Title size17 pt Semibold24 sp
Body size13 pt14 sp
Button height44 pt40 dp
Max buttons (inline)22
Button alignmentHorizontalHorizontal (right-aligned)
ПараметрiOSAndroid
ComponentНет системного (custom banner)Snackbar
PositionTop (usually)Bottom
HeightVaries48 dp (one-line)
DurationVaries4-10 seconds
ActionOptionalOptional (one action)

ПлатформаSystemCountFormat
iOSSF Symbols6,000+Vector, 9 weights, 3 scales
AndroidMaterial Symbols3,000+Vector, 7 weights, 3 grades, fill
ContextiOSAndroidUniversal
Tab Bar25-28 pt24 dp24-28 pt/dp
Navigation Bar22-24 pt24 dp22-24 pt/dp
Toolbar22-24 pt24 dp22-24 pt/dp
List row20-24 pt24 dp20-24 pt/dp
Inline with textMatch text sizeMatch text sizeMatch text
FAB24 dp24 dp
ContextiOS (SF Symbols)Android (Material)
Tab Bar (selected)FilledFilled
Tab Bar (unselected)Filled (lighter)Outlined
ToolbarStroke/OutlineOutlined
NavigationStrokeOutlined
PlatformApp IconApp Store/Play Store
iOS60×60 pt (@2x: 120px, @3x: 180px)1024×1024 px
Android48×48 dp (xxxhdpi: 192px)512×512 px

Animation TypeiOSAndroidUniversal
Quick feedback0.1-0.15s50-100ms~100ms
Standard transition0.25-0.35s200-300ms200-350ms
Complex/Emphasis0.4-0.5s300-500ms300-500ms
Page transition0.35s300ms300-350ms
TypeiOSAndroid (M3)
StandardeaseInOutEmphasized (0.2, 0, 0, 1)
EntereaseOutEmphasized Decelerate
ExiteaseInEmphasized Accelerate
SpringSpring animation

Обе платформы требуют поддержки Reduce Motion:

ПлатформаSettingFallback
iOSReduce MotionCrossfade instead of slide
AndroidRemove AnimationsInstant transitions

Universal: Всегда проверять настройку Reduce Motion и упрощать анимации


ПлатформаIntroducedRequired
iOSiOS 13Expected by users
AndroidAndroid 10Expected by users
PrincipleiOSAndroid
Don’t invert
Use semantic colors
Elevation = lighter✅ (tonal surfaces)
Reduce saturationSlightlyYes (via tonal palette)
Pure black backgroundSometimes (#000)Base (#000 or near)
  • Semantic colors adapt automatically
  • Images have light/dark variants where needed
  • Sufficient contrast maintained
  • Shadows adjusted (often reduced/removed)
  • No inverted colors
  • Test both modes

IndicatorDescription
Navigation BarCentered title, translucent blur
Tab BarTranslucent, no pill indicator
Back buttonChevron + text label
SwitchesGreen when on
CornersContinuous (squircle)
TypographySF Pro characteristics
Status BarDynamic Island / Notch
SheetsRounded corners, drag indicator
IndicatorDescription
Top App BarLeft-aligned title, solid/tonal
Navigation BarPill indicator on selected
FABFloating Action Button present
Back buttonArrow icon only
SwitchesPrimary color when on, thumb icon
CornersCircular or slight radius
TypographyRoboto characteristics
Status BarNotch or hole-punch
Bottom SheetsLarge corner radius (28dp)
IF (Tab Bar has translucent blur AND no pill indicator) → iOS
IF (FAB present OR Nav Bar has pill indicator) → Android
IF (Back button has text label) → iOS
IF (Switch is green when ON) → iOS
IF (Large corner radius ~28dp on sheets) → Android
IF (Dynamic Island visible) → iOS

#CriterionRequirementSeverity
1Touch targets≥44pt (iOS) / ≥48dp (Android)🔴 Critical
2Touch spacing≥8 pt/dp between targets🔴 Critical
3Text contrast≥4.5:1 (normal), ≥3:1 (large)🔴 Critical
4UI contrast≥3:1 for components🔴 Critical
5Minimum text≥11 pt/sp🔴 Critical
6Safe areasContent respects safe areas🔴 Critical
#CriterionRequirementSeverity
7Body text size14-17 pt/sp🟠 Important
8Margins16 pt/dp minimum🟠 Important
9Spacing gridMultiples of 4 or 8🟠 Important
10Dynamic Type / Font ScaleSupported🟠 Important
11Dark ModeBoth modes look correct🟠 Important
12Color independenceInfo not conveyed by color alone🟠 Important
#CriterionRequirementSeverity
13Animation duration100-500ms🟡 Recommended
14Reduce MotionAlternative animations🟡 Recommended
15Semantic colorsUsing system colors🟡 Recommended
16Platform consistencyFollows platform patterns🟡 Recommended

#CriterionRequirement
1Tab Bar height49 pt (+34 pt with Home Indicator)
2Navigation Bar44 pt (small) / 96 pt (large title)
3Status Bar54 pt (Dynamic Island)
4Home Indicator34 pt reserved
5Touch target≥44×44 pt
6Body text17 pt
7Tab Bar labels10 pt
8Switch51×31 pt, green when ON
9SF SymbolsUsed appropriately
10Translucent barsNavigation/Tab bars have blur
#CriterionRequirement
1Navigation Bar height80 dp
2Top App Bar64 dp
3Status Bar24 dp
4Gesture handle20-24 dp
5Touch target≥48×48 dp
6Body text14-16 sp
7Nav Bar labels12 sp
8FAB56 dp (if present)
9Material SymbolsUsed appropriately
10Baseline grid8 dp (4 dp for small)
11Button height40 dp
12Text Field height56 dp
13Edge-to-edgeContent extends under system bars

CategoryWeightMax Points
Accessibility30%30
Layout & Spacing20%20
Typography15%15
Components15%15
Platform Compliance10%10
Visual Polish10%10
Total100%100
CriterionPointsCondition
Touch targets10All ≥44/48 pt/dp
Touch spacing5All ≥8 pt/dp
Text contrast8All ≥4.5:1
UI contrast4All ≥3:1
Color independence3Not relying on color alone
CriterionPointsCondition
Safe areas6Properly respected
Margins5Consistent ≥16 pt/dp
Spacing grid5Multiples of 4/8
Alignment4Elements properly aligned
CriterionPointsCondition
Minimum size5≥11 pt/sp
Hierarchy5Clear visual hierarchy
Consistency5Consistent text styles
CriterionPointsCondition
Correct sizes8Components match specs
Proper states4Hover, pressed, disabled
Consistency3Consistent styling
CriterionPointsCondition
Navigation pattern4Follows platform norms
Component style3Platform-appropriate
Interaction patterns3Expected behaviors
CriterionPointsCondition
Dark Mode4Both modes correct
Animations3Appropriate durations
Overall aesthetics3Professional appearance
ScoreGradeInterpretation
90-100AExcellent, production ready
80-89BGood, minor improvements needed
70-79CAcceptable, several issues
60-69DBelow standard, significant issues
<60FFailing, major rework needed

## Design Evaluation Request
**Platform**: [iOS / Android / Cross-platform / Unknown]
**Screen Type**: [e.g., Login, Dashboard, Settings, List]
**Design File**: [attached]
### Evaluate against:
1. Universal requirements (touch targets, contrast, spacing)
2. Platform-specific requirements (if platform known)
3. Provide score breakdown by category
4. List specific issues with locations
5. Suggest fixes for each issue
### Output Format:
- Overall Score: X/100 (Grade)
- Category Scores
- Critical Issues (must fix)
- Important Issues (should fix)
- Recommendations (nice to have)
- Platform Compliance Notes

┌─────────────────────────────────────────────────────┐
│ UNIVERSAL DESIGN MINIMUMS │
├─────────────────────────────────────────────────────┤
│ Touch Target: 44-48 pt/dp │
│ Touch Spacing: 8 pt/dp │
│ Text Contrast: 4.5:1 (normal), 3:1 (large) │
│ UI Contrast: 3:1 │
│ Min Text Size: 11-12 pt/sp │
│ Body Text: 14-17 pt/sp │
│ Margins: 16 pt/dp │
│ Spacing Grid: 4 or 8 pt/dp increments │
│ Button Height: 40-50 pt/dp │
│ List Row: 44-56 pt/dp │
│ Animation: 100-500ms │
└─────────────────────────────────────────────────────┘
┌──────────────────┬──────────────┬──────────────────┐
│ Element │ iOS │ Android │
├──────────────────┼──────────────┼──────────────────┤
│ Touch Target │ 44×44 pt │ 48×48 dp │
│ Body Text │ 17 pt │ 14-16 sp │
│ Nav Bar (top) │ 44-96 pt │ 64 dp │
│ Tab/Nav (btm) │ 49-83 pt │ 80 dp │
│ Button │ 44-50 pt │ 40 dp │
│ Text Field │ 44 pt │ 56 dp │
│ Switch │ 51×31 pt │ 52×32 dp │
│ FAB │ — │ 56 dp │
│ Card Radius │ 10-16 pt │ 12 dp │
│ Sheet Radius │ ~10 pt │ 28 dp │
│ System Font │ SF Pro │ Roboto │
│ Icon System │ SF Symbols │ Material Symbols│
└──────────────────┴──────────────┴──────────────────┘

ПараметрЗначение
Версия1.0
Дата создания2025-02
ИсточникиApple HIG, Material Design 3, Android Design Guidelines
НазначениеКросс-платформенная AI-оценка дизайн-макетов

  1. material-design-3-guidelines.md — Полный гайд Material Design 3
  2. android-design-guidelines.md — Android-специфичные рекомендации
  3. ios-human-interface-guidelines.md — Apple iOS HIG

Использование: Этот документ служит единой точкой входа для AI-оценки. Для детальных спецификаций обращаться к platform-specific документам.