iOS 5自定义标签栏图像垂直对齐

boz*_*boz 19 iphone ios ios5

我的自定义标签栏出现了一些奇怪的行为.图像似乎不正确对齐.这是一个截图(我删除了自己的标签栏背景以突出显示我的问题):

截图

这是我用来为每个状态设置图像的代码:

self.tabBarController = [[[UITabBarController alloc] init] autorelease];
self.tabBarController.viewControllers = [NSArray arrayWithObjects:homeNavController, whatsOnNavController, mapNavController, infoNavController, nil];
self.tabBarController.delegate = self;

// For iOS 5 only - custom tabs
if ([self.tabBarController.tabBar respondsToSelector:@selector(selectedImageTintColor)]) 
{

    // Set the background images
    //[[UITabBar appearance] setBackgroundImage: [UIImage imageNamed:@"nav_bg.png"]];
    [[UITabBar appearance] setSelectionIndicatorImage:[UIImage imageNamed:@"nav_over.png"]];

    [homeNavController.tabBarItem setFinishedSelectedImage:[UIImage imageNamed:@"nav_home_over"] withFinishedUnselectedImage:[UIImage imageNamed:@"nav_home"]];
    [whatsOnNavController.tabBarItem setFinishedSelectedImage:[UIImage imageNamed:@"nav_whats_on_over"] withFinishedUnselectedImage:[UIImage imageNamed:@"nav_whats_on"]];
    [mapNavController.tabBarItem setFinishedSelectedImage:[UIImage imageNamed:@"nav_map_over"] withFinishedUnselectedImage:[UIImage imageNamed:@"nav_map"]];
    [infoNavController.tabBarItem setFinishedSelectedImage:[UIImage imageNamed:@"nav_info_over"] withFinishedUnselectedImage:[UIImage imageNamed:@"nav_info"]];

}
Run Code Online (Sandbox Code Playgroud)

我的所有替换标签图像都是正确的尺寸(非视网膜版本高49像素,宽80像素).

什么可能导致这种奇怪的行为?

---更新---

这是一个更新的截图,背景到位:

截图2

Vyt*_*tis 66

UIBarItem上有一个属性(UIBarButton项继承自此类)imageInsets.

要使用全高图像(49像素)finishedSelectedImage,finishedUnselectedImage您需要设置这些图像插入:

tabBarItem.imageInsets = UIEdgeInsetsMake(6, 0, -6, 0);


小智 25

您现在可以在Storyboard中解决此问题.故事板大小检查器图像插入调整 标签栏项目的故事板大小检查器

选择要调整的选项卡栏项目,打开"大小"检查器,然后调整"顶部和底部图像插入".你需要调整它们相同的数量,否则它们只会挤压/拉伸你的图像(所以在顶部+5,在底部-5)


boz*_*boz 2

事实证明,您应该始终在 tabitem 中包含文本。该空间是由空白文本创建的。