2010-10-01 17 views
6

Tenga una mirada en el siguiente fragmento de captura de pantalla de una aplicación para iPad que estoy trabajando en:Iconos de la barra de herramientas del iPad: ¿las imágenes del botón de la barra no están centradas?

ipad toolbar button images

El icono de "burbuja de chat" de la izquierda es de la famosa Glyphish icon set. Tenga en cuenta que tiene un posicionamiento vertical correcto (en el medio), pero es mucho más oscuro que la escala de grises utilizada para el botón InfoDark. El código para hacer este icono es el siguiente:

UIImage* image = [UIImage imageNamed:@"02-chat.png"]; 
CGRect frame = CGRectMake(0, 0, image.size.width, image.size.height); 
UIButton* button = [[UIButton alloc] initWithFrame:frame]; 
[button setBackgroundImage:image forState:UIControlStateNormal]; 
[button addTarget:nil action:NULL forControlEvents:UIControlEventTouchUpInside]; 
[button setShowsTouchWhenHighlighted:YES]; 
UIBarButtonItem* chatBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:button]; 

el icono de "burbuja de chat" en el medio se crea utilizando la misma imagen, utilizando el código diferente. Tenga en cuenta la forma en que ha tenido correcta coloración/transparencia, pero tiene posicionamiento vertical incorrecta (demasiado alto) .:

UIImage* image = [UIImage imageNamed:@"02-chat.png"]; 
UIBarButtonItem* chatBarButtonItem = [[UIBarButtonItem alloc] initWithImage:image style:UIBarButtonItemStylePlain target:nil action:NULL]; 

¿Cómo consigo un botón UIBarButtonItem que tiene tanto la coloración correcta/transparencia (por lo que no tengo que hacerlo manualmente), así como corregir el posicionamiento vertical?

¿Es uno de los errores, ya sea en mi código o en el de Apple? ¿O ambos? ¿O ninguno (es decir, "como está diseñado")?

Editar: Las respuestas a las respuestas

Parece que la primera versión es utilizando la imagen como una máscara, en lugar de como una imagen normal.

Parece que sí, pero no es el caso. Si sustituyo la imagen por una que haya sido alisada manualmente por un amigo con Photoshop y use un UIButton, el posicionamiento y el color son correctos. Solo estoy tratando de encontrar ese paso manual.

Tenga en cuenta que poniendo UIResponder objetos (por ejemplo, UIButton) dentro de un UIBarButtonItem da impredecibles resultados, y he encontrado que es mejor es evitarlo.

¿Tiene una fuente? (Especialmente un enlace de Apple?) Nunca escuché eso.

Rediseña la imagen para que sea la tuya. Esa es la mejor y única forma de garantizar el tamaño adecuado, gradientes y la posición de todos los iconos de la barra de herramientas.

No estoy necesariamente en desacuerdo. Sin embargo, este es un paso manual que quiero eliminar. Debería ser posible obtener el comportamiento que deseo sin requerir edición. (Sobre todo porque consigo las dos mitades de la conducta deseada utilizando los marcos existentes. Simplemente no al mismo tiempo)

mejor para una barra de herramientas es 25x25 y 50x50 @ 2x. A veces es posible que tenga que ir al tan bajo como 23.

¿Es esto algo oficial de Apple? ¿Quizás del HIG? ¿Puedes proporcionar una fuente?

Puede intentar configurar imageInsets en para presionarlo hacia abajo.

Esto también es un proceso manual innecesario. La peor parte es que esto debe ajustarse a mano para cada imagen, y si una imagen cambia de alguna manera, se debe verificar dos veces. Demasiado trabajo. Quiero simplemente configurarlo en una imagen y dejar que el marco subyacente resuelva cómo centrar la imagen.

Respuesta

0

Puede intentar configurar imageInsets para presionarlo hacia abajo.

Apenas cree que al igual que el del medio y establecer de esta manera:

chatBarButtonItem.imageInsets = UIEdgeInsetsMake(2.0f, 0.0f, -2.0f, 0.0f); 

Voy a tratar de echar un vistazo más de cerca un poco más tarde con este caso específico. No estoy seguro de por qué estaría haciendo esto.

== == EDITAR

Parece que Michael puede tener una respuesta para el comportamiento.

+0

Ver la actualización de mi pregunta. –

1

Parece que la primera versión usa la imagen como máscara, en lugar de como una imagen normal. Tenga en cuenta que colocar objetos UIResponder (por ejemplo, UIButton) dentro de un UIBarButtonItem da resultados impredecibles, y he encontrado que es mejor evitarlo.

El relleno en la segunda versión parece ser solo un problema de relleno. Entonces, puede cambiar el tamaño de la imagen para tener contenido adicional, haciendo que el objeto UIImage sea del mismo tamaño que los otros botones (¿24x24px, creo?), O puede usar the imageInsets property of UIBarItem.

+0

Ver la actualización de mi pregunta. –

0

Rediseña la imagen para que sea la tuya. Esa es la mejor y única forma de garantizar el tamaño adecuado, los degradados y la posición de todos los iconos de la barra de herramientas. Lo mejor para una barra de herramientas es 25x25 y 50x50 @ 2x. A veces es posible que necesite ir tan bajo como 23.

La otra cosa que puede hacer es cambiar las imágenes superiores e inferiores por 2 píxeles para obtener el resultado que desea. Si solo cambias 1 recuadro, aplastará la imagen.

+0

Ver la actualización de mi pregunta. –

Cuestiones relacionadas