UIImageView imágenes faltantes en la pantalla de inicio en el dispositivo

Tengo una aplicación que admite iOS8 y posterior, construida en Xcode 7 y estoy usando un XIB para una pantalla de inicio (no tengo imágenes de inicio). La vista contiene una sola UILabel con la versión de la aplicación, y 2 UIImageViews con imágenes que están presentes en Images.xcassets: un logotipo y una image de bienvenida.

El UILabel y la image del logotipo aparecen correctamente cuando ejecuto la aplicación, pero la image de bienvenida no aparece si ejecuto la aplicación en un iPad Air 2 con iOS9. He probado en un Air y un Mini con simuladores iOS8 y iOS9 para iPad 2, iPad Air y iPad Air 2 y la image aparece correctamente en todos ellos.

Ejecuté una solución de problemas básicos para ver si podía averiguar qué estaba sucediendo pero no pude resolverlo y la única diferencia que puedo ver entre la image que está funcionando y la que está fallando es cuando la agregué al bienes…

Aquí hay un resumen de lo que sé:

  • El UIImageView para la image de bienvenida está en el lugar correcto, con el tamaño correcto. Puedo decir esto porque puse su color de background en verde solo para asegurarme. La vista está allí, pero la image no aparece. Entonces asumo que la vista no tiene la culpa.

  • Al configurar UIImageView para que la image de bienvenida utilice también la image del logotipo, la image del logotipo aparece en el lugar correcto para la vista. Esto también me lleva a suponer que la vista no tiene la culpa.

  • El UIImage que estoy usando en la vista de image de bienvenida se utiliza en otra parte de la aplicación y aparece bien en esas otras vistas (la image del logotipo también se usa en otra parte de la aplicación y parece estar bien). Asumo que la image es válida y que aparece en otras vistas no es un problema.

  • He confirmado que la configuration de los UIImages para el logotipo y splash en el file xcassets es la misma. Están configurados en Universal, cualquier ancho y alto, múltiples factores de escala, representados por defecto. Hay una diferencia: el logotipo tiene escalas 1x, 2x y 3x, mientras que la image splash solo tiene 1x y 2x, pero también he intentado usar UIImages con solo 1x y 1x y 2x en UIView y funcionan (si fueran agregado al proyecto hace algún time).

  • Agregar otra image de un tamaño o formatting diferente (PNG y JPG) a mis xcasassets y usar ese UIImage en UIImageView para la image de bienvenida también no se muestra.

  • Agregando otra UIImageView al file XIB y asignándole un UIImage que ya estaba en los xcassets funciona, la image aparece en la pantalla de carga.

  • Copiar y cambiar el nombre de los files de image utilizados para el logotipo y agregarlos al proyecto, luego usar ese UIImage en la vista de bienvenida también no se muestra.

  • He intentado limpiar el proyecto, reiniciar la máquina de desarrollo y eliminar la aplicación del Air 2 y volver a instalarla en caso de que fuera un problema.

Estos tres últimos pasos me llevan a creer que hay algún problema con las imágenes añadidas después de un cierto punto en la vida del file del proyecto. Mientras que actualicé a Xcode 7 ayer, la image de bienvenida se añadió originalmente en Xcode 6, pero la image del logo (también agregada en Xcode 6) se agregó unos meses antes.

He revisado los files json para la image del logotipo y la image de bienvenida y parecen tener el mismo formatting. También he explorado el file pbxproj en busca de diferencias y no puedo ver ninguna.

Entonces me preguntaba si alguien tenía alguna idea de por qué la pantalla de inicio podría no mostrar estas nuevas imágenes que estoy agregando específicamente en el Air 2. Otras preguntas que he estado leyendo relacionadas con imágenes que no aparecen parecen relacionarse con Lanzar imágenes, o con imágenes en files XIB que tienen classs asociadas, ninguna de las cuales parece relevante aquí.

Activar si está desactivado y volver a encenderlo.

En serio, reinicie el dispositivo, eso es lo que me lo arregló.

Esto es lo que no funcionó:

  • Limpieza DerivedData
  • Limpieza del proyecto
  • Desinstalar la aplicación del dispositivo
  • Reinicio de Xcode
  • Reinicio de la computadora

Observaciones anteriores:

Al igual que los demás, es:

  • Funciona bien en el simulador
  • Solía ​​trabajar en los dispositivos (iPhone 5S, iPad Air)
  • No hay cambios en el código (verificado mediante git reset –hard HEAD), pero dejó de funcionar.

Lo que recuerdo al activar la primera compilation donde dejó de funcionar fue desenchufar el iPhone mientras estaba funcionando. (No estoy seguro si está relacionado.)

Sin embargo, el restablecimiento de git no solucionándolo (combinado con que todos los pasos de limpieza no funcionen) me dice que esto debe estar almacenado en caching en otro lugar. ¿Posiblemente en uno de los files .gitignorados? (Estoy usando el file Git ignore para proyectos Xcode )

Una solución que funcionó para un UIImageView (en la UIView que tiene tres) pero no para los demás estaba poniendo la image en un file .xcassets. La reverencia al file de image simple no deshizo la corrección. (Realmente se siente como un error de caching.)

ACTUALIZACIÓN: vea arriba – reiniciar el dispositivo es lo que lo solucionó. Tengo la sensación de que los datos de bitmap incorrectos se almacenan en caching en el dispositivo mismo.

Radar: http://openradar.appspot.com/23534818

"La solución para mí fue simplemente asegurarse de que el recuadro" Borrar context de charts "no esté marcado para UIImageView en el guión gráfico. Solo cambiar esto me lo arregló". Ninguna otra solución funcionó para mí. Lo tengo del foro de desarrolladores de Apple

introduzca la descripción de la imagen aquí

Tenía exactamente el mismo problema en un iPhone 6.

El hecho muy extraño es que pude usar otra image de mis imágenes.xcassets que tenían el mismo tamaño, compression, espacio de color …

No puedo encontrar por qué no funciona pero encontré una solución: simplemente coloque su file fuera de su images.xcassets y use su nombre completo (con extensión) en Interface Builder

splashScreen en muestra de storyboard

Espero que esto ayude !

La siguiente secuencia de operaciones solucionó el problema para mí en Xcode 7.3.1 e iOS 9.3.4:

  1. Limpia tu estructura (⌘ + ⇧ + K)
  2. Cerrar Xcode
  3. Dispositivo de restablecimiento duro de iOS (reinicio del button Power + Home)
  4. Relaunch Xcode: deje que la indexing termine y se genere en el dispositivo una vez que esté listo.

Muchas otras respuestas sugieren que los dispositivos de reinicio y / o la reconstrucción y / o reinstallation son la solución.

Si bien estas respuestas funcionan para algunos de nosotros, la razón por la que funcionan es porque la aplicación se ve obligada a "volver a tomar" o "rebuild" las instantáneas almacenadas en caching.

Las aplicaciones utilizan las instantáneas en caching para presentar imágenes antes de que los datos se carguen en la memory, incluido el catálogo de activos que contiene imágenes de storyboard.

Esta respuesta SO de @jaga proporciona la solución, pero no la razón, de por qué faltan UIImageViews en la pantalla de inicio en el dispositivo (pero no en el simulador).

Fondo

Recientemente intenté usar una fuente personalizada en mi file "Launch Screen.storyboard".

La razón por la que no pude aclararme después de leer esta respuesta SO de @TimCamber, lo que me impulsó a hacer un poco más de investigación y testings.

La razón por la que una fuente personalizada no está incluida en mi file de Storyboard de Screen Launch es la misma razón por la que no se incluye una image dentro de un catálogo de activos …

La aplicación prepara instantáneas de retrato y paisaje de la pantalla de inicio de la aplicación desde su file de Storyboard de pantalla de inicio y (actualmente) la guarda en su package de aplicaciones aquí:

  • /Library/Caches/Snapshots/<<app_bundle>>/ y
  • /Library/Caches/Snapshots/<<app_bundle>>/downscaled/ .

Este process se completa antes de cargar cualquier file de soporte, incluidas las fonts personalizadas y el catálogo de activos.

Solución

Como se mencionó anteriormente siguiendo la solución de @jaga, literalmente todo lo que se requiere es:

  1. (escuela vieja) agregue un file de image (.PNG) al package de su aplicación (como puede ver en la siguiente captura de pantalla, agregué el file de image debajo del subdirectory de Archivos de Soporte en un subdirectory de Imágenes) y

captura de pantalla de directorios relevantes en Project Navigator en Xcode

  1. haga reference a esa image en su object UIImageView en el file del Storyboard de la pantalla de inicio …

captura de pantalla de la sección de visualización de imágenes para UIImageView en Inspector de atributos en Xcode

Estaba viendo el mismo problema. Reiniciar el dispositivo (iPhone 6) y rebuild la aplicación en el dispositivo es lo único que lo solucionó. Probé muchos otros consejos y sugerencias pero nada funcionó. Solo reinicio + reconstrucción ayudado.

Tenía lo mismo para la aplicación instalada de TestFlight. Eliminar aplicación -> luego reiniciar iPhone -> luego reinstalar aplicación funciona para mí. Simplemente reinstalar la aplicación o simplemente reiniciar el dispositivo no ayuda.

Estaba teniendo el mismo problema, pero reiniciar el dispositivo no ayudó. Lo que funcionó para mí fue eliminar el UIImageView de mi storyboard de lanzamiento y agregar uno nuevo.

Retire las imágenes de Image.xcassets y agréguelas nuevamente al proyecto. Funcionó para mí.

Lo que funcionó para mí fue seleccionar Restablecer contenido y configuration … desde el menu Simulador

Restablecer el contenido y el menú de configuración

También tuve este problema exacto en Xcode 7 con dispositivos iPad y iPhone. Aunque no tiene sentido, pude evitarlo la mayor parte del time al configurar no solo la image, sino también la image resaltada en la vista de la image de la misma image en mis imágenes.xcassets.

Yo uso el dispositivo iPhone 5s, también cumplo con este problema.

Lo arreglo por:

  • Eliminar los datos de la unidad

  • Limpiar el proyecto

  • Reiniciar Xcode

  • Eliminar el proyecto de mi dispositivo

  • Reinicia los 5s

Creo que es un error que Xcode use memory, el sistema puede asignar un poco de memory para Xcode, porque Xcode ha fallado el dibujo de la image del almuerzo (en mi computadora, Xcode ha estado corriendo durante varias semanas sin cerrar)

Esto es demasiado importante. ¡ Debe estar vacío !

introduzca la descripción de la imagen aquí

Creo que la pantalla de inicio solo admite imágenes en Assets.xcassets.

¿Ha intentado apagar y encender el dispositivo de nuevo? Hazlo.

Parecía un error de iOS. Como a veces desapareció la animation del sistema.

Ahora acabo de reiniciar el iPhone y está funcionando para mí.

Seleccione ImageView y luego elimine la extensión de image (.png o .jpg) en la pestaña del inspector de attributes> Vista de image> Imagen> Nombre de image.

En launchscreen.storyboard la image no aparecerá, pero estará allí en el dispositivo. Esto funcionó para mí.

Reiniciar Xcode lo hizo por mí.

Lo que no lo hizo:

  • Carpeta de construcción limpia
  • Reiniciar el dispositivo o simulador (la image no estaba visible en ninguno)

Tengo el mismo problema con imageView, un storyboard de pantalla de inicio. Eliminé la reference de la image del proyecto, cambié el nombre de mi image y la agregué nuevamente al proyecto. Todo funciona perfectamente.

En mi caso, solo voy a la aplicación TARGETS -> General -> Iconos de aplicaciones e imágenes de lanzamiento -> Lanzar origen de imágenes Luego select la fuente donde pongo las imágenes Espero que esto te ayude

Para mí, el problema era que el tamaño de mi Launchscreen estaba desactivado en 1 píxel (2209×1242 en lugar de 2208×1242). Corregirlo, luego reiniciar el dispositivo y rebuild la aplicación ayudó.

También puede 1. borrar la image del proyecto 2. cambiar el nombre de la image 3. agregar la image del file al proyecto

Funcionó para mí.

Tuve este problema en iOS 10 en un iPhone 6 y también en el Simulador. Mi image estaba en una carpeta y ese parecía ser el problema. Quité la image de la carpeta en Xcode y la puse en el directory base del proyecto que resolvió el problema.

Experimento lo mismo. Cambié la resolución de la image de 300 píxeles / pulgada, la cambio a 72. Me funciona.

Luego me ayudó:

  • cambiar "Lanzar file de pantalla" a otro xib
  • ejecutar la aplicación
  • cambiar xib volver

También es muy importante : verifique que su xib no se abra en otra pestaña, ¡que también puede causarla!

Encontré una solución simple pero radical que funcionó para mí:

1 – Elimine el file: LaunchScreen.storyboard y muévalo a la papelera.

2 – Producto -> Limpio

3 – Cree un nuevo file de pantalla de inicio llamado: LaunchScreen.storyboard y coloque sus imágenes en él

4 – Guardar y comstackr

Eso funcionó para mí después de probar methods complejos durante horas … Parece que mi LaunchScreen.storyboard estaba bloqueado por escritura y no se podía save o un process de caching extraño lo bloqueaba.

ha funcionado para mi

Primero en xcode clean del proyecto.

Si utiliza el simulador, elimine la aplicación y vuelva a iniciarla.

Si usa un dispositivo, elimine la aplicación y reinicie el dispositivo.

"myProject" es con muchas imágenes iniciadas desde Images.xcassets. Pero me encontré con imágenes perdidas después de eliminar y restaurar "Assets.xcasset" del proyecto.

  1. Eliminando Images.xcasets accidentalmente, pero
  2. Agregar Images.xcassets a "myProject"

Me encontré con este problema de imágenes faltantes y probé los siguientes methods:

  1. Recicle la energía del dispositivo, pero no funciona.
  2. Usar Xcode para "build" el proyecto después de "limpiar", y tampoco funciona.

Solución para solucionar mi problema:

  1. Se agregó cada una de las imágenes dentro de Images.xcassets a "myProject" a través de Xcode en "Target Membership" en "Show in File Inspector" y vuelve a la normalidad.

Seleccione su file de image desde el menu de la izquierda, select "mostrar el inspector de files" en el menu Utilidades de la derecha. Bajo la membresía objective, asegúrese de que su objective esté seleccionado. Agregué la image con la selección del objective, pero no sé por qué no se seleccionó. Probé todas las soluciones, reiniciar, eliminar, etc. nadie trabaja. Esto funcionó. Espero que ayude a alguien más.