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

我收到了一些奇怪的行为,我的自定义标签栏。 图像似乎被排列不正确。 这是一个截图(我已经删除了我自己的标签栏背景,以突出我的问题):

截图

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

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"]]; } 

我所有的replace标签图像的大小都正确(非视网膜版本为49像素高,80像素宽)。

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

—更新—

这里是一个更新后的屏幕截图:

截图2

UIBarItem(UIBarButton项目inheritance自此类) imageInsets上有一个属性。

要为完整的select图像和finishedUnselectedImage使用全高度图像(49px),您需要设置这些图像插入:

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

你现在可以在Storyboard中解决这个问题。 故事板大小检查器图像插入调整 选项卡栏项目的情节图板大小检查器

select您要调整的标签栏项目,打开尺寸检查器,然后调整顶部和底部图像插图。 你需要调整他们相同的数量,否则他们只会挤压/拉伸你的形象(所以+5在顶部,-5在底部)

这可能看起来有点骇人听闻,但我相信这是你可以实现你想要的唯一方法:你只需要使用标签栏完成的图像有一个透明的11像素“顶部填充”(22像素的视网膜)。 您的图像将必须是60px(120px)高。

我的应用程序使用这种技术,它的应用程序商店,所以你应该是安全的使用它。

希望能帮助到你!

这个API的文档logging很糟糕。

您的finishedSelectedImage应该是一个图标〜30×30像素。 这只是标签的图标部分。 如果您创build的太高的finishedSelectedImage ,系统将不会把它放在屏幕的底部。

从概念上讲,你开始为tabBar一个全宽,49px高的backgroundImage ,添加一个单选项卡宽度,49px高的selectionIndicatorImage作为选定选项卡的背景图像,然后添加每个选项卡的图标的两个版本〜30×30 px, finishedUnselectedImagefinishedSelectedImage

事实certificate,你应该总是有一个tabitem内的文字。 该空间是由空白文本创build的。

如果将图像添加为子视图而不是定义的框架,可以帮助您。 检查这个

尝试使用稍小的图像,tabbar稍微重新定位