SF Symbols personalizados: la plantilla variable y los tres orígenes obligatorios
Apple incluye más de 6.000 SF Symbols y la app de SF Symbols es gratuita, pero la mayoría de las apps con el tiempo necesitan un ícono que Apple no tiene: una marca, un glifo específico de un dominio, una acción personalizada que no encaja en el vocabulario del sistema. El camino correcto es crear un SF Symbol personalizado en lugar de incluir un SVG estático, porque los SF Symbols personalizados heredan gratis toda la maquinaria del sistema: escalan con Dynamic Type, participan en las animaciones de Symbol Effects, se renderizan en los cuatro modos de renderizado, se alinean con la tipografía SF Pro y respetan los ajustes de accesibilidad sin código por app. Los SVG estáticos no participan en nada de eso.
Este post recorre el flujo de trabajo con la plantilla variable de la app SF Symbols, introducida en SF Symbols 3 en la WWDC 20211. El enfoque es “cuáles son los tres diseños de origen obligatorios y por qué”, porque el formato de plantilla es la pieza estructural del flujo de trabajo que la mayoría de los diseñadores e ingenieros pasa por alto la primera vez. Las versiones posteriores de SF Symbols (4, 5, 6, 7) ampliaron el formato de plantilla con color variable, transiciones magic replace, soporte para gradientes y efectos de animación, pero la estructura central de tres orígenes de la plantilla variable se ha mantenido estable desde SF Symbols 3.
TL;DR
- Los SF Symbols personalizados parten de una plantilla exportada desde la app de SF Symbols (
File > Export Template, o⌘E)2. La plantilla es un SVG con guías definidas por el sistema para el dimensionado y un diseño de símbolo de marcador de posición que debes reemplazar. - La plantilla variable solo requiere tres diseños de origen: Ultralight-Small, Regular-Small y Black-Small. La app de SF Symbols interpola las 24 variaciones restantes (3 escalas × 9 pesos) automáticamente3.
- La compatibilidad de rutas es el requisito estructural: cada ruta debe tener el mismo número de puntos de anclaje, el mismo punto inicial y la misma dirección en los tres orígenes. Sin esto, la interpolación produce glifos malformados.
- Los símbolos personalizados admiten los cuatro modos de renderizado (monocromo, jerárquico, paleta, multicolor) y la estructura de capas (primaria, secundaria, terciaria). El panel del inspector de renderizado del Symbol Editor asigna subrutas a las capas.
- Entrega final: agrega el archivo del símbolo a Xcode como un Symbol Image Set en el catálogo de recursos. SwiftUI lo referencia mediante
Image(_:)con el nombre del símbolo; el sistema se encarga del resto.
La plantilla variable
SF Symbols 3 (WWDC 2021) introdujo la plantilla variable3, un único archivo SVG que captura tres diseños de origen y a partir del cual la app de SF Symbols genera la cuadrícula completa de 27 variaciones. Los tres orígenes son:
- Ultralight-Small. El peso más ligero, la escala más pequeña.
- Regular-Small. El peso medio, la escala más pequeña.
- Black-Small. El peso más pesado, la escala más pequeña.
La app usa estos tres para interpolar las otras 24 celdas (Ultralight-Medium, Regular-Medium, Black-Medium, Ultralight-Large, Regular-Large, Black-Large, además de los pesos intermedios en cada escala). La interpolación es automática siempre que las rutas de origen tengan una estructura compatible.
Antes de que SF Symbols 3 introdujera la plantilla variable, los símbolos personalizados requerían dibujar manualmente las 27 variaciones. La plantilla variable redujo eso a 3 + interpolación, que es la diferencia entre un esfuerzo de diseño manejable y uno que mata el proyecto.
El requisito de datos compatibles
La interpolación de rutas requiere que las tres rutas de origen describan la misma forma en el mismo orden2:
- Mismo número de puntos de anclaje. Un cuadrado en peso Regular con 4 anclajes debe tener 4 anclajes en Ultralight y en Black, aunque la curvatura visible sea distinta.
- Mismo punto inicial. El primer anclaje de la ruta debe estar en la misma posición conceptual (por ejemplo, siempre la esquina superior izquierda) en los tres pesos.
- Misma dirección. Las tres rutas recorren la forma en el mismo orden (sentido horario o antihorario).
Si falla cualquiera de estas condiciones se producen artefactos de interpolación: torceduras, superposiciones erróneas, trazos faltantes. La app de SF Symbols expone algunos de ellos (la vista previa de variantes muestra el resultado de la interpolación), pero los problemas sutiles solo se manifiestan en el recurso final exportado.
El flujo pragmático es diseñar primero Regular-Small, luego derivar Ultralight reduciendo el grosor del trazo y Black aumentando el grosor del trazo sobre el mismo esqueleto de ruta. Cada derivación preserva por construcción el conteo de anclajes, el punto inicial y la dirección. Diseñar cada peso de forma independiente produce problemas de compatibilidad que toma más tiempo depurar que rehacer la construcción.
El flujo de trabajo
Cinco pasos del concepto al recurso funcional:
1. Encuentra un símbolo existente similar
La biblioteca de la app de SF Symbols tiene más de 6.000 símbolos. Encuentra uno estructuralmente similar a tu concepto (un círculo con contenido, un cuadrado con superposición, una línea con decoración). El camino de exportar plantilla usa la geometría de un símbolo existente como punto de partida.
2. Exporta la plantilla
File > Export Template… o ⌘E. Elige “Variable” como tipo de plantilla. El resultado es un archivo SVG con los tres pesos de origen del símbolo dispuestos, además de la geometría de referencia que muestra la altura de las mayúsculas, la línea base y los márgenes visuales que SF Symbols usa para alinear con el texto SF Pro.
3. Reemplaza las rutas de la plantilla
Abre el SVG en un editor vectorial (Sketch, Figma, Illustrator, Affinity Designer, Inkscape). Las capas nombradas de la plantilla contienen los tres diseños de origen. Reemplaza cada uno con tu diseño personalizado preservando los nombres de las capas y la alineación con la altura de mayúsculas y la línea base.
El requisito de compatibilidad de rutas importa aquí: diseña cada peso a partir del mismo esqueleto de ruta, variando el grosor del trazo o el peso del relleno en lugar de redibujar. El flujo de “duplicar y modificar” de las herramientas vectoriales es el camino de menor resistencia.
4. Reimporta y verifica
Arrastra el SVG modificado de vuelta a la app de SF Symbols. La app genera las 27 variaciones y las muestra en la cuadrícula de variantes. Inspecciona cada combinación de peso y escala en varios niveles de zoom; los artefactos de interpolación a menudo aparecen en pesos intermedios que no son inmediatamente obvios.
Para símbolos con múltiples elementos visuales (un cuerpo más una insignia, un círculo más una forma interior), abre el panel del inspector de renderizado y asigna subrutas a capas (primaria, secundaria, terciaria). Las asignaciones de capas determinan cómo se renderiza el símbolo en los modos jerárquico, paleta y multicolor.
5. Agrégalo a Xcode
Arrastra el archivo del símbolo (.svg exportado desde SF Symbols) al catálogo de recursos de Xcode. Xcode lo trata como un Symbol Image Set. Referéncialo desde el código:
Image("MyCustomSymbol")
.symbolRenderingMode(.hierarchical)
.foregroundStyle(.tint)
Image(_:) (sin parámetro systemName:) carga desde el catálogo de recursos. Los mismos comportamientos .symbolRenderingMode, .foregroundStyle, .symbolEffect y de Dynamic Type que funcionan en los símbolos del sistema funcionan en los símbolos personalizados, siempre que el símbolo se haya creado correctamente.
Modos de renderizado y estructura de capas
Los cuatro modos de renderizado que expone SF Symbols funcionan igual en los símbolos personalizados que en los del sistema4:
- Monocromo. Color único (
foregroundStyle). El modo más simple y el más común. - Jerárquico. Color único, con opacidad variable por capa. Las capas definidas en el panel del inspector de renderizado obtienen opacidades preestablecidas; el desarrollador aplica un solo tinte y obtiene jerarquía visual automáticamente.
- Paleta. Color explícito por capa. El desarrollador pasa múltiples argumentos
foregroundStyle; cada capa recibe el suyo. - Multicolor. Colores fijos definidos por Apple por capa. Para los símbolos personalizados, los colores son los que el diseñador asigna en la configuración Multicolor del Symbol Editor.
La estructura de capas es lo que hace que funcionen los modos jerárquico, paleta y multicolor. Un símbolo personalizado sin asignaciones de capas colapsa todas las rutas en la capa primaria; el símbolo aún se renderiza en monocromo pero no produce jerarquía visual en los otros modos. Tómate el tiempo de asignar capas en el panel del inspector de renderizado para cualquier símbolo que se beneficie de la profundidad.
Fallas comunes
Tres patrones de los registros de fallas de símbolos personalizados:
Violaciones de compatibilidad de rutas. El problema más común. Un símbolo que “se ve bien en peso Regular” pero produce pesos intermedios con fallas casi siempre tiene un problema de compatibilidad de rutas. Diagnóstico: abre la cuadrícula de variantes de la app de SF Symbols, mira las variantes de peso medio; si muestran torceduras o trazos que no coinciden con la interpolación esperada, una de las tres rutas de origen viola la compatibilidad.
Línea base o altura de mayúsculas desalineadas. Los símbolos diseñados sin respetar la guía de línea base de la plantilla quedarán mal alineados junto al texto. El síntoma visual: el símbolo aparece demasiado alto o demasiado bajo cuando se coloca en línea con Text con estilo .body. Solución: usa la geometría de referencia de la plantilla; coloca el centro óptico del símbolo en el punto medio de la altura de mayúsculas.
Sin asignaciones de capas. Un símbolo con una estructura interna rica (múltiples elementos visuales) pero sin asignaciones de capas se renderiza correctamente solo en monocromo. Las apps que seleccionan modo jerárquico o paleta ven una salida plana. Solución: abre el panel del inspector de renderizado y asigna cada subruta a una capa (primaria para la forma principal, secundaria para los acentos, terciaria para el detalle terciario).
Lo que este patrón significa para las apps de iOS 26+
Tres conclusiones.
-
Usa SF Symbols personalizados, no SVG en bruto, para los íconos dentro de la app. El flujo de trabajo de símbolos personalizados es trabajo de ingeniería real, pero la integración con el sistema (Dynamic Type, Symbol Effects, modos de renderizado, accesibilidad) hace que el costo valga la pena para cualquier ícono que viva en la UI a largo plazo. Los SVG estáticos son adecuados para recursos de marketing puntuales, no para la UI principal.
-
Diseña a partir de un único esqueleto; varía el grosor del trazo, no la estructura de la ruta. Las violaciones de compatibilidad de rutas son el modo de falla estructural. El proceso de diseño defensivo es comenzar con un peso (Regular-Small), derivar Ultralight reduciendo el trazo y Black aumentando el trazo a partir de la misma geometría de ruta. La compatibilidad se mantiene por construcción.
-
Asigna capas explícitamente para cualquier símbolo que se beneficie de los modos de renderizado. Un símbolo que se renderiza solo en monocromo es un símbolo que renuncia a la mitad del sistema SF Symbols. El panel del inspector de renderizado toma minutos; el resultado son símbolos que participan en los modos jerárquico, paleta y multicolor junto a los símbolos del sistema.
El cluster completo del Apple Ecosystem: App Intents tipados; servidores MCP; la pregunta del enrutamiento; Foundation Models; la distinción entre runtime y tooling LLM; tres superficies; el patrón de fuente única de la verdad; dos servidores MCP; hooks para el desarrollo en Apple; Live Activities; el contrato de runtime de watchOS; internals de SwiftUI; el modelo mental espacial de RealityKit; disciplina del esquema de SwiftData; patrones de Liquid Glass; envío multiplataforma; la matriz de plataformas; Vision framework; Symbol Effects; inferencia con Core ML; Writing Tools API; Swift Testing; Privacy Manifest; Accesibilidad como plataforma; tipografía SF Pro; patrones espaciales de visionOS; Speech framework; migraciones de SwiftData; motor de foco de tvOS; internals de @Observable; protocolo Layout de SwiftUI; sobre lo que me niego a escribir. El hub está en la serie del Apple Ecosystem. Para un contexto más amplio sobre iOS con agentes de IA, consulta la guía de desarrollo de agentes para iOS.
FAQ
¿Necesito la app de SF Symbols, o puedo crear símbolos personalizados de otra manera?
La app de SF Symbols es la herramienta oficial y la única que produce símbolos personalizados validados y compatibles con la App Store. Existen herramientas de terceros y conversores en línea, pero producen SVG que pueden o no satisfacer los requisitos del formato de plantilla. Para apps en producción, usa la app de SF Symbols.
¿Puedo crear símbolos personalizados en Windows?
La app de SF Symbols es solo para macOS. Puedes editar el SVG de plantilla exportado en cualquier plataforma con un editor vectorial, pero los pasos de exportación y reimportación requieren macOS. La mayoría de los equipos tienen al menos un diseñador en macOS que puede manejar esos pasos; los flujos de trabajo de equipos remotos pasan el archivo SVG a través del control de versiones o almacenamiento compartido.
¿Cómo soporto .symbolEffect en un símbolo personalizado?
La mayoría de los efectos de símbolos funcionan automáticamente si la estructura del símbolo está bien formada: bounce, pulse, scale y los demás se aplican al símbolo independientemente de su origen. La transición de contenido .replace necesita que el símbolo de origen y el símbolo de destino tengan estructuras compatibles (recuentos de capas similares, forma general similar). El post sobre Symbol Effects del cluster cubre el vocabulario de efectos en detalle.
¿Cuál es la diferencia entre un Symbol Image Set y un Image Set normal en Xcode?
Un Symbol Image Set importa la plantilla completa del símbolo (las 27 variaciones) y las expone a través de la canalización de renderizado de SF Symbols. El símbolo escala con Dynamic Type, participa en los modos de renderizado y funciona con .symbolEffect. Un Image Set normal es un recurso ráster o SVG estático que no participa en nada de eso. Usa Symbol Image Set para los SF Symbols personalizados.
¿Cómo manejan los símbolos personalizados visionOS y watchOS?
Igual que los símbolos del sistema: se renderizan en los tamaños esperados de la plataforma (pequeños para watchOS, grandes para visionOS), participan en las funciones de accesibilidad de la plataforma y respetan las convenciones de color y efectos de la plataforma. La autoría del símbolo personalizado se hace una sola vez; el comportamiento multiplataforma es automático. Los posts del cluster sobre Apple Platform Matrix y patrones espaciales de visionOS cubren las consideraciones por plataforma.
¿Cuál es el impacto en la revisión de la App Store?
Ninguno. Los SF Symbols personalizados se revisan de forma idéntica a los demás recursos del Asset Catalog. Las pautas de estilo visual (no suplantar los patrones de UI de Apple, no violar marcas registradas) se aplican a los símbolos personalizados igual que al resto de obras personalizadas; por lo demás, el proceso de revisión los trata como recursos de imagen estándar.
Referencias
-
Apple Developer: SF Symbols. La descarga de la aplicación, el navegador de la biblioteca de símbolos y el hub de documentación para la creación de símbolos personalizados. ↩
-
Documentación de Apple Developer: Creating custom symbol images for your app. La guía autoritativa de Apple que cubre la exportación de plantillas, la estructura SVG, los requisitos de compatibilidad de rutas y la importación al catálogo de recursos de Xcode. ↩↩
-
Apple Developer: Create custom symbols (sesión 10250 de la WWDC 2021). La introducción del formato de plantilla variable y el flujo de trabajo de tres diseños de origen. ↩↩
-
Documentación de Apple Developer:
SymbolRenderingMode. Los cuatro modos de renderizado (.monochrome,.hierarchical,.palette,.multicolor) y sus interacciones con la estructura de capas. ↩