2010-07-07 17 views
12

Estoy en el proceso de actualizar mi aplicación para iPhone a gráficos de alta resolución, y he tenido algunos problemas con dispositivos más antiguos. La situación involucra mis iconos UITabBar. Echar un vistazo:Los íconos UITabBar de alta resolución se muestran a tamaño completo en la pantalla de baja resolución

alt text

La captura de pantalla superior se ve correcta. Fue capturado en el iPhone de última generación (nueva pantalla) con OS4. Sin embargo, la segunda captura de pantalla es completamente incorrecta. Los íconos de alta resolución se muestran con un tamaño del 100% y se recortan. Esa segunda captura de pantalla fue tomada desde mi iPod touch de segunda generación (pantalla vieja) con OS4.

Por lo tanto, estoy muy confundido aquí. He leído la documentación de Apple y, hasta donde sé, estoy haciendo todo lo que necesitan. Dentro de mi paquete de aplicaciones que tengo imágenes nombradas como:

Dentro constructor de interfaces, que han determinado la versión de baja resolución de cada imagen (el nombre del archivo sin "@ 2x") para ser utilizado en la barra de pestañas. Si entiendo la documentación de iPhone correctamente, el dispositivo debería detectar automáticamente la resolución de la pantalla y mostrar la versión de alta resolución, si está disponible. Entonces, en todo caso, parece que mi iPod touch detecta incorrectamente su resolución de pantalla. ¿Me estoy perdiendo algo aquí tal vez?

¡Se agradecerá cualquier ayuda o idea que se pueda ofrecer! Gracias.

Actualización 1:

No hubo suerte hasta ahora. Tomé el enfoque manual y añade lo siguiente en el comando viewDidLoad de mi UITabBarController:

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    UITabBarItem *tab; 
    UIViewController *item; 

    tab = [[UITabBarItem alloc] initWithTitle:@"Featured" image:[UIImage imageNamed:@"tab-featured.png"] tag:0]; 
    item = [self.viewControllers objectAtIndex:0]; 
    item.tabBarItem = tab; 
    [tab release]; 

    tab = [[UITabBarItem alloc] initWithTitle:@"Topics" image:[UIImage imageNamed:@"tab-topics.png"] tag:1]; 
    item = [self.viewControllers objectAtIndex:1]; 
    item.tabBarItem = tab; 
    [tab release]; 

    tab = [[UITabBarItem alloc] initWithTitle:@"Video" image:[UIImage imageNamed:@"tab-video.png"] tag:2]; 
    item = [self.viewControllers objectAtIndex:2]; 
    item.tabBarItem = tab; 
    [tab release]; 

    tab = [[UITabBarItem alloc] initWithTitle:@"Experts" image:[UIImage imageNamed:@"tab-experts.png"] tag:3]; 
    item = [self.viewControllers objectAtIndex:3]; 
    item.tabBarItem = tab; 
    [tab release]; 

    tab = [[UITabBarItem alloc] initWithTitle:@"Events" image:[UIImage imageNamed:@"tab-events.png"] tag:4]; 
    item = [self.viewControllers objectAtIndex:4]; 
    item.tabBarItem = tab; 
    [tab release]; 
} 

Esto todavía produce el mismo resultado que el anterior (grandes iconos de corte dentro de la barra de pestañas). ¿Alguien ha oído hablar de problemas con la UITabBar poblando pares de iconos de alta resolución?

Actualización 2:

Con respecto al comentario de Santiago:

Sí, yo era capaz de resolver este. Parecía un error con las referencias de archivos en XCode. Me estaba quedando sin ideas, así que di la vuelta y comencé a eliminar todas las imágenes @ 2x de mi aplicación, solo para que todo vuelva a mostrarse correctamente con el diseño de baja resolución. Una vez que la aplicación mostró las imágenes de tamaño adecuado nuevamente (aunque a baja resolución), una por una comencé a agregar nuevamente las imágenes @ 2x, esperando que se rompa algo. Pareció funcionar bien la segunda vez que entró. No sé por qué o qué pasó. El SDK simplemente parecía tener algunos cables cruzados en cuanto a lo que había sucedido.

+0

que fueron capaces de resolver este problema? Tengo exactamente el mismo problema por el que, por algún motivo, al implementar mi aplicación en un dispositivo con iOS 3.1.3 usando imágenes de alta resolución, exactamente de la misma manera que usted, el dispositivo 3.1.3 muestra la versión de alta resolución del png archivo y recortarlo. – James

+0

hombre, este error es tan molesto como una mierda. obteniendo los mismos resultados en el creador de interfaces de XCode, y no teniendo suerte resolviéndolo mediante la eliminación/lectura de activos, etc. Muy frustrante. [1 minuto después] - y ahora está funcionando bien. – SmartyP

Respuesta

4

Según tengo entendido, la magia está en los métodos imageNamed:, y initWithContentsOfFile: de UIImage. Pase uno de esos un literal NSString sin el "@ 2x" o la extensión de archivo, y mágicamente encontrará la versión correcta del archivo para su dispositivo.

Una consecuencia de esto es, las imágenes de sus artículos barra de pestañas se deben establecer mediante programación. Es posible que IB aún no sea lo suficientemente inteligente como para escribir un plumín que selecciona dinámicamente la imagen en función de la resolución del dispositivo. Intente configurar esas imágenes a mano en su método -viewDidLoad.

+0

Gracias por la respuesta, lamentablemente esto todavía no está haciendo el truco. Publicaré mis esfuerzos continuos en este hilo. – bigmac

+0

Veo el código que ha publicado. Intenta dejar el ".png" fuera de tus nombres de archivo. Según entiendo, esos métodos tomarán un nombre base como argumento de NSString y buscarán los archivos coincidentes con un "@ 2x" opcional y una extensión de archivo. –

0

intentar omitir la extensión de archivo .png. Al hacerlo, el sistema operativo busca los archivos de baja resolución y las versiones @ 2x de forma adecuada. Esto está documentado en la descripción general de Apple "Soporte de pantallas de alta resolución".

+0

He intentado eliminar la extensión desde el principio sin éxito. No fue hasta que eliminé por completo y volví a vincular todas las imágenes que obtuve este problema enderezado. – bigmac

Cuestiones relacionadas