¿Por qué necesito las imágenes @ 1x, @ 2x y @ 3x iOS?

¿Por qué necesitamos estos 3 types de imágenes particulares?

Si tengo un button en mi aplicación con una image de background, por ejemplo, 50 píxeles x 50 píxeles, ¿por qué necesito 3 versiones de esta image? ¿Qué me impide hacer una image que es mucho más alta en resources, por ejemplo, 700×700, por lo que cuando se networkinguce en cualquier iPhone, no se networkingucirá al máximo que el dispositivo querría?

Lo único que puedo pensar es que simplemente ocupa más espacio, pero para aplicaciones simples / un button simple, parece que no causaría ningún problema. Lo he probado en algunos dispositivos y no veo ninguna diferencia entre ellos cuando lo simulo y hago este método. Sin embargo, como me sumerjo más en las aplicaciones y cosas, estoy seguro de que hay una sustancia detrás de esta técnica.

Si no tiene el tamaño exacto, hay dos cosas que pueden suceder:

Remodelación

@3x o @2x pueden ampliarse desde @1x pero generalmente el resultado visual es borroso, con líneas gruesas y no se ve bien. Volver @3x escalar @3x desde @2x puede ser incluso peor porque se deben usar subpíxeles.

Downscaling

En general, los resultados son mucho mejores que con la mejora de escala, sin embargo, eso no aplica para todas las imágenes. Si tiene un borde de 1px en una image de @3x , después de networkingucirla a @1x el borde no estará visible (0.33px). Lo mismo aplica para cualquier object pequeño en la image. Downscaling destruye todos los detalles.

En general, para que una image también se vea perfecta, desea evitar tanto la networkingucción de escala como la escala de escala. Siempre puede ir solo con imágenes @2x o @3x y agregar otras escalas solo si ve problemas visuales. El uso de una resolución más alta no mejorará la networkingucción de escala. Las resoluciones altas solo se usan para evitar la escala. Reducir la escala desde una escala alta (por ejemplo, @100x ) a @1x no creará mejores resultados que la networkingucción a escala de @3x .

Necesita 3 types de imágenes en los elementos de image porque en términos de escala o píxeles, hay 3 types de dispositivos Apple (iPhone e iPad) que son

Dispositivo normal que expresa 1 pixel = 1 point @ 1x (dispositivos iPhone y iPad antiguos)

Dispositivo retina que se expresa en 4 pixels(2 x 2) = 1 point @ 2x (iPhone 4+)

Retina iPhone6 ​​y iPad que términos a 9 pixels (3 x 3) = 1 point @ 3x (iPhone6 ​​+)

Por lo tanto, para proporcionar la misma image en 3 escalas, iOS decide qué image mostrar para qué dispositivos. La esperanza podría ayudarlo a comprender esto.

EDITAR

introduzca la descripción de la imagen aquí

Es porque si proporciona un gráfico de alta resolución sería una pérdida de espacio en el dispositivo de un usuario. Gracias al corte de aplicaciones, el dispositivo downloadá (desde App Store) solo las partes que realmente se ajustan al dispositivo (para que el dispositivo retina no descargue charts sin retina). Esta es la razón por la cual Apple creó catálogos de activos y este tipo de reglas a seguir. Lo describen en sus sesiones.

En resumen, es para disminuir el uso de memory / disco, por lo que se trata de boost el performance y la experiencia del usuario

En primer lugar, necesita saber el comportamiento de los puntos frente a los píxeles. En dispositivos sin retina, la relación punto vs píxeles es 1 punto = 1pixel . En los dispositivos retina, hay dos relaciones: 1 punto = 2×2 píxeles según el tamaño de la pantalla, y 1 punto = 3×3 píxeles, debido a la densidad de píxeles, que se cuadruplica mirando en la no retina.
Es por eso que necesita estos 3 types de imágenes para que se muestren en su resolución más alta.

Complementando lo que dijo Sulthan:

Debido a que no propició las imágenes adecuadas para un dispositivo específico, tiene que networkingucir la escala o boost la escala. Estos processs harán uso de su memory y procesamiento, lo que puede resultar en una disminución del performance, dependiendo de cuántas imágenes esté haciendo a la vez y del tamaño de la image.

Si proporciona solo una gran image, encontrará varios problemas:

  1. El downscaling lleva a la pérdida de calidad (incluso si no es enorme)
  2. Se necesita más potencia computacional para networkingucir la escala de la image que para mostrar la image ya procesada previamente.
  3. El tamaño de su binary aumenta y no puede beneficiarse de la networkingucción de la aplicación que se presenta con iOS 9.

Como puede ver, producir solo una image afectará el performance y la calidad de su aplicación y afectará desproporcionadamente a aquellos con dispositivos más antiguos. Esto es porque:

  1. Necesitan networkingucir más. Además, el performance de sus dispositivos no es tan bueno como el de los nuevos, por lo que es mucho más probable que se den count de los retrasos con su aplicación
  2. No tienen el mismo espacio de almacenamiento, por lo que realmente deseas poder usar el adelgazamiento de aplicaciones para ayudarlos
  3. La pérdida de calidad será la más alta para ellos y considerando el hecho de que la resolución de sus dispositivos es baja, lo notarán.

Debido a esto, es probable que los usuarios sean infelices y esto sea malo para usted. Porque, según mi experiencia, los usuarios descontentos tienen 10 veces más probabilidades de calificar su aplicación que los usuarios felices. No quieres eso, ¿verdad? 🙂

Gracias a todos por la input. Entiendo más ahora y supongo que tendré que jugar más con él, especialmente los activos, que aún no he investigado. Parece ser lo que la mayoría hace basándose en mi investigación en la web. Tampoco sabía que Apple seleccionaba las imágenes que podía usar en segundo plano de los activos. Tenía la printing de que tenía que seleccionar y elegir manualmente más que quería usar por dispositivo y codificarlo, pero parece que es más simple.