Tengo este ObjC código:

[self.myButton setBackgroundImage:[UIImage imageNamed:[NSString stringWithFormat:@"%@-button", self.myObject.name]]
                         forState:UIControlStateNormal];

Esto funciona muy bien con estas combinaciones:

  • XCode 5, iOS 7.1
  • XCode 6, iOS 7.1
  • XCode 6, iOS 8

Pero cuando voy a puerto de una sola clase de que el proyecto de Swift — una clase que no está relacionado con nada de lo que sucede en este código, las imágenes no se muestran en XCode 6 para iOS 7.1. Funciona con XCode 6 y iOS 8.

He terminado de trasladar la totalidad del proyecto de Swift, por lo que ahora el código es:

self.myButton.setBackgroundImage(
    UIImage(named:self.myObject.name + "-button"),
    forState: UIControlState.Normal
)

Y todavía sigue siendo infeliz en iOS 7.1. Todavía no hay imágenes. (El icono personalizado obras, sin embargo.) Sí, sé que esto es sólo la versión beta del software, y probablemente se trate de un error … ? Pero me pregunto si alguien tiene una solución o una idea.

Yo sólo empecé a usar XCode y ObjC hace aproximadamente una semana (¡sorpresa! ObjC ahora es obsoleto!), así que podría ser que me estoy perdiendo algo, pero ya se trabaja en ObjC, y en Swift+iOS8, parece que es probablemente un error.

  • trate de añadir la extensión al final del nombre de la imagen. He visto que solucionar un par de problemas con el código Swift…
  • Estoy experimentando la misma cosa, te mantendremos informado cuando lo de averiguar.
  • Quien dijo que Objective-C es obsoleto?
  • Estoy experimentando la misma cosa
  • Objective-C no es obsoleto, sólo tienes dos opciones diferentes de código de iOS/OSX aplicaciones en la actualidad.
  • Mismo problema aquí. Parece activos fuera de las imágenes paquete todavía funcionan. Yo podría escribir un script para copiar todo el contenido del paquete y mantener los nombres propios si no somos capaces de llegar a cualquier otra revisión.
  • el Objetivo-C dice: «Gracias, aún estoy muy bien, yo no estoy en desuso en todo!».
  • Pascal era en realidad nunca obsoleto en Mac OS, ya sea, ¿a que no? No me refiero a que literalmente. Pero la escritura en la pared. Se va a tomar algunos años, pero en algún punto, nadie va a hacer un nuevo desarrollo en ObjC.
  • Usted debe recompensar la respuesta a mvcm – su respuesta está trabajando en la beta 3, y probablemente en las otras versiones. [Nota: puede utilizar los puntos!]

InformationsquelleAutor pudge | 2014-06-05

7 Comentarios

  1. 9

    Me las he arreglado para superar este no usar Bibliotecas de Activos para guardar mis imágenes.

    Agregar imágenes para el proyecto utilizando el «viejo estilo» nomenclatura, como de la Imagen.png y [email protected], a continuación, cargarlos sin ningún tipo de extensiones en el nombre de archivo, tales como:

    let myImage = UIImage(named:"Image")
    • La única solución que he encontrado así
  2. 4

    Fija en XCode 6 beta 2

    Imágenes de catálogos de activos en proyectos con un mínimo de destino de la implementación de iOS 7 y OS X
    10.9 estarán disponibles cuando se ejecuta en iOS 8 y OS X 10.10, y ahora también de iOS 7 y OS X
    10.9. (17029658)

    versión de xcode 6 beta 2 notas

    • Perfecto! Acaba de descargar XCode 6 Beta 2, añadió mi Png para el Activo de Catálogo, utiliza la imagen de los botones de mi, y todo lo que aparecía correctamente en mi dispositivo de iOS 7.
    • iOS 8 simulador de Xcode 6 beta 2 todavía no funciona, pero en iOS7 simulador de Xcode 6 beta 2 obras
    • Todos ellos (iOS 7, iOS 7.1, iOS 8) trabajar para mí en XCode 6 Beta 2. Intenta crear nuevo proyecto y probarlo allí.
    • Roto en Xcode 6 Beta 3
    • Roto en Xocde 6 beta 6
    • Roto en Xcode 6.1 beta 1
    • No las imágenes funcionan si los archivos png no se agregan a los Bienes de catálogo?

  3. 3

    Para mí fue porque de repente me agregue jpg imagen para Activos de Imagen. Sólo se vuelve a guardar como png y todos funcionan bien

    • Ridículo. Yo hice lo mismo y funcionó. Parece un error? O sólo desea que los archivos PNG se utiliza?
  4. 2

    Me imagino que se están probando en el simulador. Asegúrese de que la deseada imagen es copiada a 7.1 paquete. Para hacerlo de verificación copy resources bundle etapa de construcción o comprobar manualmente la aplicación de paquetes para los diferentes simuladores en ~/Library/Application Support/iPhone Simulator/.

    • En realidad no lo es tanto en el 7.1 simulador, y en mi 7.1 dispositivo. Pero la comprobación de lo que has dicho ahora …
    • Me miro en el proyecto principal de la ventana y ver Copia Recursos de Paquete, y las Imágenes.xcassets está ahí. Se tendría que ser, a la derecha, o de lo contrario no se mostraría en iOS 8? Yo veo una de los Activos.coche, tanto el iOS 7.1 y iOS 8 dispositivos, y es exactamente el mismo archivo (con marca de verificación md5). Así que no parece ser el problema. Y al parecer en XCode 6, es en ~/Library/Developer/CoreSimulator/Devices/DEVICE_ID/data/Containers/Bundle/Application/APP_ID/APP_NAME.app/ para iOS 8, y en ~/Library/Desarrollador/CoreSimulator/Dispositivos/DEVICE_ID/datos/Aplicaciones/APP_ID/APP_NAME.app/ para iOS 7.1.)
  5. 1

    @o KB o señala aquí que el Xcode6 notas de la versión Beta mencionar que xcassets paquetes no son compatibles para iOS7. Además, he encontrado que es sorprendentemente difícil deshacerse de paquetes de activos en el proyecto. Esto puede provocar colisiones entre nombres si las imágenes tienen el mismo nombre que las imágenes que se encontraban anteriormente en el paquete (usted probablemente querrá el mismo nombre, así que usted no tiene que cambiar el nombre de tus imágenes en todas partes en el /los código /IB).

    He aquí una solución:

    1. Copia de cada imagen de su .xcassets imagen de un lote a un nuevo directorio (vamos a llamar a Images/). Vea a continuación una secuencia de comandos para hacer esto más fácil.
    2. Eliminar su .xcassets paquete. (sorprendentemente, de sacarla del proyecto no es suficiente. En mis pruebas, si el .xcassets paquete fue en cualquier lugar en el mismo directorio que el proyecto de Xcode o las relacionadas con las fuentes, que sería copiada. Alternativamente, usted puede quitar el .xcassets extensión)
    3. Agregar todos los archivos de imagen a su proyecto de Xcode
    4. Limpio (cmd + shift + k)
    5. Eliminar la aplicación desde el dispositivo de destino o simulador
    6. Instalar y ejecutar

    A hacer paso #1 menos tedioso, escribí un script para copiar imágenes de la .xcassets y paquete en un directorio de su elección: https://github.com/johnboiles/xcasset_exporter

    mkdir Images
    ./xcasset_exporter.py MyProject/Images.xcassets Images
  6. 0

    Tuve un problema en el algunos imágenes en xcassets funcionado y otros no (sólo para iOS 7.1).
    Lo resuelto por la eliminación de la problemática de la imagen fija y la creación de unos nuevos con diferentes nombres.

  7. 0

    Si usted está tratando de usar un externa paquete con la debida PNG imágenes almacenadas en un «viejo estilo» de la carpeta o en el interior de xcassets, a continuación, las aplicaciones que se ejecutan en iOS 7 se no ser capaz de acceder a estas imágenes.

    He intentado una sugerencia de otra respuesta aquí para agregar el «viejo estilo» de la ruta de la carpeta de las imágenes en el paquete externo pero que no funcionó para mí. Mi solución, que se ajustan a mi escenario, era exponer a una toma de corriente para el recurso en la punta en el interior de la exterior del paquete. Esto permitió la aplicación principal para establecer con un accesible imagen. Si esto es un bug o simplemente una restricción en el uso de puntas contenidas en el exterior de paquetes con iOS 7 le importa menos como olas en el uso de la puesta de sol…

    PS: Aplicaciones que se ejecutan en iOS 8, donde poder acceder a las imágenes en el paquete externo xcassets igual de bien, así que elige tu veneno para apoyar a iOS 7.

Dejar respuesta

Please enter your comment!
Please enter your name here