相关疑难解决方法(0)

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

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

截图

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

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

iphone ios ios5

19
推荐指数
3
解决办法
1万
查看次数

设置标签栏的背景图像

我正在尝试以编程方式为我的应用中的标签栏设置背景图片.我的代码如下:

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)

任何帮助,将不胜感激.

问候,斯蒂芬

iphone tabbar

7
推荐指数
2
解决办法
3万
查看次数

标签 统计

iphone ×2

ios ×1

ios5 ×1

tabbar ×1