hicieron la misma tarea hoy.
Como no puedo usar el espacio completo de la barra de pestañas para la imagen del artículo, solo cambio el fondo de la barra de pestañas cuando el usuario presiona cualquier pestaña.
El primer paso es preparar imágenes de fondo con botones de tamaño completo para cada pestaña seleccionada.
A continuación, cree clase personalizada y asignarla para el controlador de la barra de pestañas
En la imagen de fondo establecido clase personalizada para la primera pestaña en viewDidLoad:
[[self tabBar] setBackgroundImage:[UIImage imageNamed:@"tabShopsActive"]];
[[self tabBar] setSelectionIndicatorImage:[UIImage imageNamed:@"tabSelection"]];
Añadir el cambio de fondo para cada UIController en viewWillAppear:
UITabBarController *bar = [self tabBarController];
[bar.tabBar setBackgroundImage:[UIImage imageNamed:@"tabDiscountsActive"]];
Entonces, cuando el usuario presione cualquier pestaña, la barra de pestañas cambia el fondo para mostrar la imagen correcta.
Es mi barra de pestañas que resulta cuando la segunda pestaña seleccionada:

¿Estas seguro que cuando se llama 'initWithTitle: Imagen: Etiqueta:' y pasando nula por el título, y un puntero válido a una imagen, aún perder píxeles a un título vacío? –
Sí, mostrará algunos píxeles en blanco en la parte inferior y desplazará la imagen hacia arriba. Por ejemplo, al hacer que la altura de la barra sea un poco más grande que la imagen del artículo, la imagen se cortará en la parte superior y habrá espacio vacío debajo – mrosales