5
votes

Im trying to create a custom UITabbar using images for the selected and unselected states.

this is my code:

if ([UIImage instancesRespondToSelector:@selector(imageWithRenderingMode:)]) {

    tab_01_on_image = [[UIImage imageNamed:@"Tabbar_on_01"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    tab_01_off_image = [[UIImage imageNamed:@"Tabbar_off_01"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

} else {
    tab_01_on_image = [UIImage imageNamed:@"Tabbar_on_01"] ;
    tab_01_off_image = [UIImage imageNamed:N@"Tabbar_off_01"] ;

}

[[[self.tabBarController.tabBar items] objectAtIndex:index] setFinishedSelectedImage:tab_01_on_image withFinishedUnselectedImage:tab_01_off_image];

This image shows the problem, the red color is the gap:

enter image description here

EDIT to add the code to create the UITabbar

self.tabBarController = [[BaseTabbarController alloc] init];
self.tabBarController.delegate = self;
self.tabBarController.viewControllers = @[navControll1, navControll2, navControll3, navControll4, navControll5];
self.window.rootViewController = self.tabBarController;

I appreciate any help you guys can offer

1
how high Tabbar_on_01?Ilario
the @2x image is 128x100px I also tried with 128x98px and got the same problem.FelipeOliveira
Is your view designed with Interface Builder, or do you create it programmatically?zbMax
programmatically zbMaxFelipeOliveira
Can you edit your question and add the code creating the tabbar please? By the way, follow this guidelines page for your icon dimension : developer.apple.com/library/ios/documentation/userexperience/…zbMax

1 Answers

6
votes

I finally found the solution. Changing the imageInsets of each tabbarItem did the trick.

tabBarItem1.imageInsets = UIEdgeInsetsMake(6, 0, -6, 0);
tabBarItem2.imageInsets = UIEdgeInsetsMake(6, 0, -6, 0);
tabBarItem3.imageInsets = UIEdgeInsetsMake(6, 0, -6, 0);
tabBarItem4.imageInsets = UIEdgeInsetsMake(6, 0, -6, 0);
tabBarItem5.imageInsets = UIEdgeInsetsMake(6, 0, -6, 0);