2011-08-10 14 views
5

Tengo una aplicación, donde la mayoría de los recursos de imágenes se almacenan en el paquete de recursos separado (hay una razón válida para hacerlo). Este conjunto de recursos se agrega al proyecto junto con el paquete de aplicaciones principal y mientras diseño mi NIB en Interface Builder todas esas imágenes son visibles dentro del IB (es decir, aparecen en la lista desplegable de mi UIImageView y se muestran correctamente en mi UI) Sin embargo, cuando ejecuto mi aplicación en el simulador, faltan todas esas imágenes. ¿Hay alguna manera de decirle a UIKit que busque esas imágenes dentro de este paquete de recursos adicionales además del paquete de aplicaciones principal?Recursos ubicados en un paquete separado visible en IB, pero no en el tiempo de ejecución

Puedo cargar esas imágenes manualmente en viewDidLoad no hay problema, pero estoy buscando una manera de usar Interface Builder para que sea más fácil cambiar el diseño/máscara de esas NIB.

Actualización: Mientras que los archivos de imagen de ese paquete están disponibles en la lista desplegable en el IB, no se cargarán en tiempo de ejecución. Sin embargo si sus nombres de prefijo con un nombre de paquete en IB así:

Sceenshot

entonces van a cargar correctamente en el tiempo de ejecución, pero IB se les mostrará como grandes signos de interrogación azules.

Ahora la pregunta es: cómo tener lo mejor de ambos mundos y tener las imágenes mostradas correctamente tanto en IB (tiempo de diseño) como en tiempo de ejecución.

+0

Cuando dices paquete, ¿realmente quieres decir '.bundle'? ¿Cómo agregaste esto a tu proyecto de Xcode? ¿Podemos ver una captura de pantalla del navegador del proyecto? – jtbandes

+0

Sí, es un .Bundle real. Puede agregarlo a su proyecto como cualquier otro archivo e IB automáticamente recoge su contenido. Aquí está la instantánea del navegador del proyecto [Navegador de proyectos] (https://img.skitch.com/20110810-jeyxrq8m35w939a41yjn1amwg8.jpg) –

+0

Estos tipos almejas lo hicieron funcionar http://stackoverflow.com/questions/7733565/ ios-how-to-use-images-in-custom-bundle-in-interface-builder, no pude hacer que funcionara con mi ios6 sdk –

Respuesta

3

Me encontré con el mismo problema, y ​​es probable que se deba a la forma en que Xcode compila sus imágenes al ensamblar el objetivo del paquete. Dado que los objetivos del paquete no son totalmente compatibles con iOS, debe crearlos como objetivos de Mac OS X. Eso deja una configuración de compilación problemática en su lugar, es decir, COMBINE_HIDPI_ARTWORK, que se establecerá en YES. Esto da como resultado que sus variantes normales y @2x se combinen en un solo archivo tiff en su paquete. El archivo resultante es compatible con Mac OS pero no con iOS.

(Gracias a this answer para la punta).

Para solucionar esto, seleccione su proyecto de creación de paquete en el Navegador de archivos, seleccione su destino de paquete, cambie a la pestaña Configuraciones de compilación y busque la configuración mencionada anteriormente. A continuación, seleccione toda la fila y toque Eliminar o simplemente configúrelo en NO.

En ese momento, debería poder usar sus imágenes tanto en IB como en código sin hacer nada especial (salvo asegurarse de que .xib e imagen estén en el mismo paquete).

Cuestiones relacionadas