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

这是我用来为每个状态设置图像的代码:
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像素).
什么可能导致这种奇怪的行为?
这是一个更新的截图,背景到位:

我正在尝试以编程方式为我的应用中的标签栏设置背景图片.我的代码如下:
RootViewController.h
IBOutlet UITabBar *mainTabBar;
IBOutlet UITabBarItem *settingsBarItem;
IBOutlet UITabBarItem *infoBarItem;
IBOutlet UITabBarItem *aboutBarItem;
Run Code Online (Sandbox Code Playgroud)
RootViewController.m
-(void)viewDidLoad {
UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"smallMenuBackground.png"]];
[mainTabBar insertSubview:imageView atIndex:0];
[imageView release];
[super viewDidLoad];
}
Run Code Online (Sandbox Code Playgroud)
这不适合我.
UPDATE
更新2012年1月23日
好的,我已经取得了一些进展.自从我升级到Xcode 4.2和IOS5后,这才停止工作.我设法使用Interface Builder中的选项将其恢复,但现在它仅适用于IOS5.理想情况下,我希望以编程方式开始工作,但我现在将满足于IB解决方案.
我似乎无法让它适用于任何以前的版本.
注意:我的TabBar只在我的RootViewController上,这是我的应用程序的主屏幕.
理想情况下,如果我能让Nithin建议的代码正常运行,那就太棒了:
UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"tabBG.png"]];
if ([[[UIDevice currentDevice] systemVersion] floatValue] > 4.9) {
//iOS 5
[self.tabBarController.tabBar insertSubview:imageView atIndex:1];
}
else {
//iOS 4.whatever and below
[self.tabBarController.tabBar insertSubview:imageView atIndex:0];
}
[imageView release];
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激.
问候,斯蒂芬