Debes usar archivos SVG para las imágenes en una aplicación nativa de iOS? ¡

Yo digo que SÍ, cuando se puede! Depende de la imagen. Estoy de acuerdo con Kevin en las fotografías, raster (información de píxeles) como PNG y JPG son el camino a seguir. Pero si usted está haciendo cualquier botones o obras de arte, y un SVG está disponible, recomiendo encarecidamente que aprovechar eso. Se trata de utilizar una imagen vectorial (instrucción de dibujo). He aquí por qué.

Razón 1: Independencia de la resolución. Si usas vectores, estás a prueba de futuro de pantallas más grandes o de mayor resolución más adelante. Usted sabe que va a suceder!

Razón 2: Tamaño de la aplicación más pequeño. Si usted tiene 1x, 2x, y 3x rasters, usted podría fácilmente añadir 10k de datos rasterizados a su paquete para cada imagen, puede ser mucho más. Si tienes 30 imágenes, las cuentas empiezan a sumar rápidamente. Una instrucción de dibujo compilada será mucho menos de 1k. Puedes ahorrar fácilmente megabytes sin esforzarte. Eso es respetar el plan de datos de tu usuario también.

Razón 3: Velocidad de inicio de la app más rápida. Las imágenes de tu carpeta de activos se cargan al inicio, junto con todas tus bibliotecas. Cuantas más imágenes tengas, más tiempo se tarda en pasar de la pantalla de inicio a la primera pantalla. Se puede cargar notablemente antes.

Razón 4: Perfección de píxeles. Si tu UIImageView no tiene exactamente el tamaño de la imagen, iOS lo interpola. Si la imagen es de 300pt, y tu imagen sólo necesita 200pt, se encoge. No es horrible, es aceptable. Por otro lado, si tu imagen es de 100pt, y tiene que expandirse, obtienes los "jaggies". Horrible. Con vector, dibujas perfectamente a 200pt para que coincida con tu UIImageView, lo que significa la mejor calidad siempre.

Mito: se tarda más en dibujar en vector. Sólo si el archivo SVG es algo loco, como 300k+, entonces sí, el vector no es una buena idea. Pero para el 99% de sus imágenes, es casi la misma velocidad. Es fácil hacer un benchmark con Instruments, así que no te creas este mito. iOS almacena en caché UIImages, y estamos hablando de vector a UIImage.

¿Cómo hacer vector entonces? Tienes opciones.

Opción 1: Un activo PDF. Lo más fácil es un vector en un archivo PDF, pero no obtienes el beneficio de la razón #3, porque está en el bundle.

Opción 2: Cargar en un WebView. Por favor, no lo hagas, sólo estás pidiendo problemas. Algunos SVGs no se renderizarán en absoluto.

Opción 3: Usar una librería de terceros. Hay soluciones en GitHub, como SVGKit, que soportan una buena cantidad, pero no todo. Estas son gratuitas normalmente.

Opción 4: PaintCode. Esta es la opción que yo uso, porque tiene un TON de beneficios. No es gratis, pero vale cada centavo. No sólo puede hacer el código de dibujo para usted, sino también el código UIImage, con la escala. Por no hablar de la capacidad de animar o controlar en gran medida cada elemento en el propio dibujo.

Por ejemplo, yo uso PaintCode para un indicador de progreso circular, como hace la aplicación de la App Store cuando descargas. Simplemente cambio el punto final de una trayectoria. Si tienes un activo, incluso un PDF, tienes un solo color de tinte para trabajar con toda la imagen, eso es todo. Lo cual está bien para la mayoría de los botones. PaintCode me da acceso a cambiar cualquier trazo, y el relleno, de forma independiente. De esta manera puedo utilizar una imagen para el progreso, no dos o más imágenes. Requerirá un poco de esfuerzo por adelantado para aprender los fundamentos de la herramienta, pero sus capacidades de imagen van a un nivel completamente nuevo.

Así que, si quieres la perfección de los píxeles, la velocidad y el poder, vete a los vectores. Si trabajas con diseñadores, estarán encantados. Puede haber más razones y opciones que no he mencionado, pero es un comienzo.