2012-08-23 16 views
5

Tenemos un proyecto de Xcode que incluye gráficos Retina para una interfaz de usuario basada en NIB y una interfaz de usuario WebView. Este proyecto crea una aplicación para Mac.COMBINE_HIDPI_IMAGES y gráficos Retina para WebView

El proyecto utiliza dos fases de construcción separadas para mover estos gráficos a la aplicación final. El primero es el Recurso de paquete de copia tradicional que obtiene los gráficos 1x y 2x en el paquete de la aplicación. La segunda es una fase de compilación de Copiar archivos que copia los gráficos web en un destino de Recursos separado con una subruta de "gráficos".

(Esto evita algunos conflictos de nombre y permite que el diseñador de páginas web utilizan un "/ whatever.png gráficos" camino conocido.)

Cuando la construcción de este proyecto, se obtiene un error de análisis de la dependencia que dice:

Imagen de múltiples representaciones '[email protected]' no puede ser procesada por una fase de compilación Copiar archivos - pruebe una fase de compilación Copiar recursos o deshabilite COMBINE_HIDPI_IMAGES.

Es bastante fácil para apagar la construcción de despliegue de configuraciones, denominados "Combinar ilustraciones de alta resolución", pero esto afecta a los gráficos utilizados en la interfaz de usuario basada en la SEMILLA, así como los de la vista Web UI. Con la opción activada, button.png y [email protected] se combinan en un button.tiff en la carpeta de recursos del paquete de la aplicación. Sin él, se usan los nombres originales.

Por lo que puedo decir, la aplicación se comporta normalmente, pero dado que COMBINE_HIDPI_IMAGES está configurado de manera predeterminada, sospecho que hay algunos beneficios al implementar los gráficos como un solo archivo (más rápido para cargar y almacenar en caché, quizás)

Idealmente, me gustaría desactivar solo COMBINE_HIDPI_IMAGES durante la fase de compilación Copiar archivos. No puedo encontrar una manera de hacer esto, es de esperar que alguien aquí puede ...

actualización 8/27/2012

En este caso específico, la forma más sencilla de solucionar el problema era reemplace todas las imágenes HTML con la versión 2x. Dado que las etiquetas especifican un ancho y una altura, las imágenes se reducen en un 50% en un dispositivo que no sea Retina. La calidad es buena y, dado que se cargan desde el sistema de archivos local, no se percibe un impacto en el rendimiento.

actualización 8/28/2012

Otro enfoque que tomamos fue con las convenciones de nombres. Algunas imágenes HTML se especifican utilizando CSS (con una consulta de medios que selecciona la versión Retina o no Retina). Para evitar problemas con la combinación de estas imágenes en una única imagen HiDPI, usamos whatever.png y whatever_retina.png.

Respuesta

0

La única forma en que puedo pensar es un truco, pero nadie más ha respondido, así que debería funcionar para usted.

Le sugiero que use un archivo xcconfig en su destino (target.xcconfig) para especificar la configuración que desea cambiar, luego tenga scripts de compilación antes/después de la fase que reemplace el xcconfig actual con una de las dos versiones (target-on .xcconfig, target-off.xcconfig). Esto debería funcionar, sin embargo, es posible que Xcode no actualice el archivo xcconfig hasta más tarde (no estoy en condiciones de verificarlo en este momento), tendrá que verificarlo.

Lo dejo para que usted descubra los detalles.Más detalles sobre (una variación menos hackish) de este enfoque, y cómo configurarlo, se pueden encontrar en mi blog.

+0

Si esto no funciona y está compilando desde _xcodebuild_, puede usar el parámetro '-xcconfig' para especificar qué versión desea. – Andrew

Cuestiones relacionadas