🆕 Apple HIG Audit Report

FitFlow — iOS App

Auditoría de cumplimiento Human Interface Guidelines · iOS 26 / iPhone 15–16 Pro

Auditado por CULTIVA IA — Branding & Diseño
Fecha 12 junio 2026
Plataforma iOS 26 (SwiftUI)
Mockup v2.3 — Pre-release
30 / 100

Rework sistemático requerido

El mockup v2.3 presenta 7 violaciones críticas: 3 de contraste y 4 de tap targets. La puntuación de 30/100 sitúa la app en la zona de riesgo alto — es probable el rechazo en App Store Review y una experiencia accesible deficiente.

🔴 <70 pts — High Risk · NO ENVIAR
7
Violaciones críticas
3
Contraste fallido
4
Tap targets pequeños
6
Checks aprobados
👁
Contraste de Color
2 / 5 PASS
Elemento Colores Ratio Estado
Texto principal home
#1C1C1E sobre #FFFFFF
17.01 ✓ PASS
Caption secundario
#8E8E93 sobre #FFFFFF · Captions & labels de datos
3.26 ✗ FAIL
Etiqueta éxito verde
#FFFFFF sobre #34C759 · Chips y badges de logro
2.22 ✗ FAIL
Texto glass card
#6E6E73 sobre #F2F2F7 · Dashboard cards
4.54 ✓ PASS
Texto de error
#FF3B30 sobre #FFFFFF · Mensajes de validación
3.55 ✗ FAIL
🔢
Tap Targets (mín. 44×44 pt)
4 / 8 PASS
Botón cerrar modal
28 × 28 pt — mínimo requerido: 44 × 44 pt
Expandir hit area a 44×44 con contentShape
FAIL
Chip filtro / tag
80 × 32 pt — alto insuficiente (32 pt)
Aumentar altura a 44 pt mínimo
FAIL
Icono perfil nav bar
32 × 32 pt — ambas dimensiones insuficientes
Padding invisible o .frame(44, 44) en SwiftUI
FAIL
Botón compartir stats
40 × 40 pt — 4 pt por debajo del mínimo
Ajustar a 44×44, mínimo cambio visual
FAIL
Botón iniciar entrenamiento (CTA)
343 × 52 pt
PASS
Botón + añadir ejercicio
44 × 44 pt — exacto HIG mínimo
PASS
Celda ejercicio lista
375 × 52 pt
PASS
Botón guardar registro
200 × 48 pt
PASS
📊
Puntuación por Categoría
Visual Design (0-20)
12 / 20
Navegación & Layout (0-20)
16 / 20
Accesibilidad (0-30)
3 / 30
Interacción & Motion (0-20)
14 / 20
Platform Features (0-10)
5 / 10
🕵
Checks Manuales
Requieren dispositivo
Liquid Glass hierarchy
Cards del dashboard — OK visual. Requiere test con Reduce Transparency activado.
VoiceOver labels
Chips de filtro y celdas de lista SIN etiquetas accesibles. Bloquea usuarios con discapacidad visual.
Dynamic Type
Implementado en títulos. Captions y labels de datos NO escalan. Riesgo de clipping en XXXL.
Safe Areas
Dynamic Island y Home Indicator respetados en todas las pantallas revisadas.
Dark Mode
Parcialmente implementado. Colores hardcoded detectados en pantalla de perfil.
Gestos estándar
Swipe-to-delete en listas y pull-to-refresh implementados correctamente.
Correcciones Priorizadas (Bottom Line First)
7 críticas · 2 menores
1

Añadir VoiceOver labels a todos los elementos interactivos Manual

Qué: Chips de filtro, celdas de lista y botones de acción no tienen .accessibilityLabel(). Por qué: Sin etiquetas, VoiceOver lee el tipo de elemento genérico — inutilizable para usuarios con discapacidad visual. Cómo: Añadir .accessibilityLabel("Filtrar por cardio") y .accessibilityHint("Toca dos veces para activar") en cada elemento interactivo.

2

Corregir contraste caption secundario (3.26 → ≥4.5) 🟢 Tool-verified

Qué: #8E8E93 sobre fondo blanco falla WCAG AA (3.26 < 4.5). Afecta a todos los captions del dashboard. Por qué: Ilegible en condiciones de luz solar y para usuarios con baja visión. Cómo: Reemplazar con .secondary (color semántico SwiftUI) o usar #6E6E73 como mínimo — ratio 4.54 verificado.

3

Corregir contraste etiqueta verde éxito (2.22 → ≥4.5) 🟢 Tool-verified

Qué: Texto blanco sobre #34C759 tiene ratio 2.22 — el peor de la auditoría. Afecta chips de logro y badges. Por qué: Falla gravemente WCAG AA. Cómo: Cambiar texto a #1C1C1E (ratio 5.84 sobre verde) o usar un verde más oscuro #1A7A3D sobre fondo claro.

4

Expandir 4 tap targets al mínimo 44×44 pt 🟢 Tool-verified

Qué: Botón cerrar (28×28), chip filtro (80×32), icono perfil (32×32) y compartir (40×40) están por debajo del mínimo HIG. Por qué: Dificulta la interacción en uso con una mano y para usuarios con movilidad reducida. Cómo: Aplicar .frame(width: 44, height: 44) o padding invisible con .contentShape(Rectangle()) en SwiftUI — el glifo visual puede mantenerse pequeño.

5

Extender Dynamic Type a captions y labels de datos 🟡 Requiere dispositivo

Qué: Los labels de datos y captions usan tamaños de fuente hardcoded. Por qué: En configuración XXXL de accesibilidad, el texto se cortará. Cómo: Usar .font(.caption) y .font(.footnote) de SF Pro escalable en lugar de .font(.system(size: 12)).

6

Corregir contraste texto de error (3.55 → ≥4.5) 🟢 Tool-verified

Qué: #FF3B30 (.red system) sobre blanco da ratio 3.55. Por qué: Los mensajes de error son información crítica. Cómo: Usar .systemRed en dark mode (ajuste automático) o añadir un icono de error para no depender solo del color.

7

Completar Dark Mode con colores semánticos Manual

Qué: Pantalla de perfil usa colores hardcoded que no adaptan a modo oscuro. Cómo: Migrar a .label, .secondaryLabel, .systemBackground de UIColor — garantizan adaptación automática en Light/Dark/High Contrast.