我的自定义标签栏出现了一些奇怪的行为。图像似乎不正确对齐。这是一个截图(我删除了自己的标签栏背景以突出我的问题):
以下是我用于为每个州设置图像的代码:
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"]];
}
我的所有替换标签图像都是正确的尺寸(非视网膜版本高49像素,宽80像素)。
可能导致这种奇怪行为的原因是什么?
以下是具有背景的更新屏幕截图:
答案 0 :(得分:66)
UIBarItem上有一个属性(UIBarButton项继承自此类)imageInsets
。
要为finishedSelectedImage
和finishedUnselectedImage
使用全高图像(49像素),您需要设置这些图像插图:
tabBarItem.imageInsets = UIEdgeInsetsMake(6, 0, -6, 0);
答案 1 :(得分:24)
您现在可以在Storyboard中解决此问题。故事板大小检查器图像插入调整
选择要调整的标签栏项目,打开“大小检查器”,然后调整“顶部和底部图像插入”。你需要调整它们相同的数量,否则它们只会挤压/拉伸你的图像(所以在顶部+5,在底部-5)
答案 2 :(得分:3)
这可能看起来有点像hackish但我相信这是你能达到你想要的唯一方法:你只需要使用标签栏完成的图像,其中有一个透明的11像素“顶部填充”(视网膜为22像素)。然后你的图像必须是60px(120px)高。
我的应用程序使用此技术进入App Store,因此您可以安全地使用它。
希望它有所帮助!
答案 3 :(得分:3)
此API的文档记录很少。
你的finishedSelectedImage
应该是一个图标~30x30像素。这只是选项卡的图标部分。如果您创建的finishedSelectedImage
太高,系统就不会将其放在屏幕底部。
从概念上讲,您从tabBar的全宽,49px高backgroundImage
开始,添加单标签宽度,49px高selectionIndicatorImage
,其作为所选标签的背景图像,然后添加每个标签图标的两个版本~30x30像素,finishedUnselectedImage
和finishedSelectedImage
。
答案 4 :(得分:2)
事实证明,你应该总是在tabitem中有文字。空间由空白文本创建。
答案 5 :(得分:-1)
如果您将图像添加为子视图而不是定义了框架,则可以帮助您。 Check this
尝试使用略小的图片,tabbar稍微重新定位