2010-07-27 19 views
14

Tengo un tabBarController que establece la imagen de la pestaña como tal, en el método -init:Hi [email protected] 2x imagen no siendo recogido para el artículo barra de pestañas

self.tabBarItem.image = [UIImage imageNamed:@"tabImage.png"];

Tengo un tabImage @ 2x.png archivo en el recurso. En el simulador de iPhone 4 o el teléfono, la imagen de alta resolución no se está recogiendo: la versión de baja resolución simplemente se está ampliando.

¿Alguna idea de por qué esto podría ser?

EDIT: Un poco más de información: Si trato y utilizar explícitamente [email protected] (o simplemente [email protected]) entonces la imagen pestaña que veo es extremadamente grande y volado más allá de los límites de la pestaña, como si se está ampliando de 60 píxeles a 120px. Por lo tanto, parece que el nombre de cualquier fuente se trata como una imagen de escala = 1.0.

+0

¿Ha verificado dos veces el caso de las letras del nombre del archivo? – ohhorob

+0

Sí, coincidencia de caso – psychotik

+0

¿Qué sucede cuando elimina la versión de baja resolución y solo deja la alta resolución en el paquete? – iwasrobbed

Respuesta

0

Puede dejar el .png apagado ahora. Creo que todavía funcionará, pero puedes intentarlo.

+0

que no parece afectar mi problema – psychotik

+1

lo que hace 'NSLog (@, [[UIImage imageNamed "% f": @" tabImage.png] escala); 'impresión –

+0

Jushua - imprime 2.000000 – psychotik

1

¿Está seguro de que el archivo se ha agregado al proyecto XCode y está visible en el explorador del proyecto?

+0

Sí, estoy seguro. – psychotik

0

acabo de ir a través de unas horas de volver a hacer arte en The Gimp y tratando de lograr que se reconozca y cargado por mi aplicación en un iPhone 4.

me encontré con el problema descrito con ciertas imágenes con una extensión @2x no ser reconocido y cargado

No pude discernir ningún patrón. Mis imágenes se cargan usando [UIImage imageNamed:@"<name>.png"] en un singleton. Inspeccioné la configuración de la escala de la imagen después del inicio y algunos fueron 1.0 (el arte antiguo) y algunos fueron 2.0 (el nuevo arte).

La única forma en que pude resolver este problema fue en eliminar y volver a agregar las imágenes de alta resolución que no se reconocieron.

0

Dos errores tontos (ambos de los cuales he hecho antes) que pueden causar este problema:

  1. accidentalmente nombrar los pequeños versiones @ 2x en lugar de las grandes los
  2. que tengan las versiones grandes be ligeramente misized (por un píxel)
11

Tenga en cuenta que el simulador no distingue entre mayúsculas y minúsculas, pero el dispositivo sí lo está. Asegúrese de que el estuche coincida EXACTAMENTE. Si ha cambiado la caja del nombre del archivo en algún momento, deberá limpiar y reconstruir. A veces, para el simulador, tuve que volar la carpeta en Biblioteca/Soporte de aplicaciones/iPhone Simulator/4.3/Aplicaciones/para obtener la reconstrucción y recuperar la imagen renombrada.

Use siempre

[UIImage imageNamed:@"foo.png"] 

Esto funcionará en dispositivos 3.xy 4.x, y en el Simulador 4.x. Los dispositivos con pantallas Retina (y el simulador 4.x) recogerán mágicamente las versiones @ 2x de tus imágenes; iOS ha sido modificado para ser inteligente sobre esta función y archivos @ 2x.png.

Asegúrese de tener tanto el @ 2x.png como el normal.png agregado al archivo de proyecto, y haz una compilación limpia &. Como otros han mencionado, verifique también el tamaño de las imágenes; aparentemente, si no son exactamente 2 veces las dimensiones, no funcionará (no lo he verificado yo mismo).

Si deja el .png apagado, solo funcionará en iOS 4.0. Así que si usted está construyendo una única aplicación 4.0+, puede pedir:

[UIImage imageNamed:@"foo"] 

Si usted tiene sólo una imagen de alta resolución y desea utilizarlo en ambos dispositivos retina y no en Retina, entonces' Tendré que cambiar view.contentMode para adaptarme.

+0

¡La limpieza y la reconstrucción lo resolvieron! Gracias. –

+0

+1 para una limpieza y reconstrucción. – Soup

0

Se necesitan 2 versiones de sus imágenes y tanto nen que estar en la misma ubicación en la carpeta del proyecto y se añade al proyecto

image.png 60x60 [email protected] 120x120

entonces simplemente utilizar [UIImage imageNamed:@"image.png"]

lo hizo de esta manera con los botones selfmade y ha funcionado para mí (iOS 4.1)

+0

Debe ser 'image @ 2x.png' no' image @ 2.png'. –

3

que tenían el mismo problema. Resultó que mi png no era cuadrado. Solución: hazlo cuadrado y funcionará.

+0

esto y la primera respuesta corrigió mi problema. –

0

Otra cosa a tener en cuenta es tener dos imágenes con el mismo nombre.

0

Tuve el mismo problema. La imagen @ 2x tenía el objetivo de compilación incorrecto marcado (ServiceTests en lugar de MyProject).

1

Tuve este problema también.

hacer 2 imágenes:

  • 30x30 píxeles
  • 60x60 píxeles

Sufijo la imagen 60x60pixel con @ 2x. Por ejemplo, [email protected]. Luego, en su guión gráfico o código, puede especificar el ordinario, tabBarImage.png, e iOS elegirá la versión @ 2x a su discreción.

0

Tuve exactamente el mismo problema.

Realice dos imágenes: im1.png e [email protected] Llame imageNamed: con la primera.

Nota, imageNamed: no inicializa el UIImage, por lo tanto, úselo como transitorio [[UIImageView new] initWithImage: [UIImage imageNamed: @ "im1.png"]] o inicialice UIImage usted mismo.

Cuestiones relacionadas