如何使用故事板通过自定义图像设置iPhone标签栏图标

时间:2012-12-21 10:13:39

标签: iphone ios uitabbarcontroller xcode4.5 uitabbar

我是iphone开发的新手,我需要在标签栏中放置一个自定义图像图标。但它只显示默认颜色(黑色和蓝色)。帮助我克服这个bug朋友......?

5 个答案:

答案 0 :(得分:22)

在应用程序中添加图像,

并参见附图

enter image description here

答案 1 :(得分:6)

在viewDidLoad

中使用此代码
UIImage *selectedImage0 = [UIImage imageNamed:@"selected.png"];
UIImage *unselectedImage0 = [UIImage imageNamed:@"unselected.png"];

UITabBarItem *item0 = [tabBar.items objectAtIndex:0];

[item0 setFinishedSelectedImage:selectedImage0 withFinishedUnselectedImage:unselectedImage0];

答案 2 :(得分:4)

在AppDelegate中使用以下代码

(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary  *)launchOptions
{


UIViewController *viewController1 = [[ViewFirstViewController alloc] init];

UIViewController *viewController2 = [[ViewSecondViewController alloc] init];
UIViewController *viewController3 = [[ViewThirdViewController alloc] init];
UIViewController *viewController4 = [[ViewFourthViewController alloc] init];

self.tabBarController = [[UITabBarController alloc] init];
self.tabBarController.viewControllers = [NSArray arrayWithObjects:viewController1, viewController2,viewController3,viewController4, nil];
self.window.rootViewController = self.tabBarController;
[self.window makeKeyAndVisible];


imgTab = [[UIImageView alloc]initWithFrame:CGRectMake(0,0,320.0,50)];
self.tabBarController.tabBar.tag=10;
[self.tabBarController.tabBar addSubview:imgTab];
self.tabBarController.delegate = self;

imghome=[[UIImageView alloc]initWithFrame:CGRectMake(0.0,00.0,80.0,50.0)];
imghome.image=[UIImage imageNamed:@"dressup_active.png"];
[imgTab addSubview:imghome];

imgQuiz=[[UIImageView alloc]initWithFrame:CGRectMake(80.0,00.0,81.0,50.0)];
imgQuiz.image=[UIImage imageNamed:@"x-mas_tree.png"];
[imgTab addSubview:imgQuiz];

imgtTW=[[UIImageView alloc]initWithFrame:CGRectMake(161.0,00.0,80.0,50.0)];
imgtTW.image=[UIImage imageNamed:@"greetings.png"];
[imgTab addSubview:imgtTW];

imgGuest=[[UIImageView alloc]initWithFrame:CGRectMake(241.0,00.0,80.0,50.0)];
imgGuest.image=[UIImage imageNamed:@"quotes_tab.png"];
[imgTab addSubview:imgGuest];

}

Tabbar Controller委托方法

- (void)tabBarController:(UITabBarController *)tabBarControllers didSelectViewController:(UIViewController *)viewController
{

NSLog(@"%i",tabBarControllers.selectedIndex);
if (tabBarControllers.selectedIndex == 0)
{

    imghome.image=[UIImage imageNamed:@"dressup_active.png"];
    imgQuiz.image=[UIImage imageNamed:@"x-mas_tree.png"];
    imgtTW.image=[UIImage imageNamed:@"greetings.png"];
    imgGuest.image=[UIImage imageNamed:@"quotes_tab.png"];

}
else if (tabBarControllers.selectedIndex == 1)
{

    imghome.image=[UIImage imageNamed:@"dressup.png"];
    imgQuiz.image=[UIImage imageNamed:@"x-mas_tree_active.png"];
    imgtTW.image=[UIImage imageNamed:@"greetings.png"];
    imgGuest.image=[UIImage imageNamed:@"quotes_tab.png"];

}
else if (tabBarControllers.selectedIndex == 2)
{

    imghome.image=[UIImage imageNamed:@"dressup.png"];
    imgQuiz.image=[UIImage imageNamed:@"x-mas_tree.png"];
    imgtTW.image=[UIImage imageNamed:@"greetings_active.png"];
    imgGuest.image=[UIImage imageNamed:@"quotes_tab.png"];

}
else if (tabBarControllers.selectedIndex == 3)
{

    imghome.image=[UIImage imageNamed:@"dressup.png"];
    imgQuiz.image=[UIImage imageNamed:@"x-mas_tree.png"];
    imgtTW.image=[UIImage imageNamed:@"greetings.png"];
    imgGuest.image=[UIImage imageNamed:@"quotes_active.png"];

}



}

答案 3 :(得分:4)

您可以将此代码段用于ios7:

UIImage *iconBoxOffice = [UIImage imageNamed:@"box-office.png"];
UIImage *selectedIconBoxOffice = [UIImage imageNamed:@"selected-box-office.png"];
UIImage *iconDvds = [UIImage imageNamed:@"dvds.png"];
UIImage *selectedIconDvds = [UIImage imageNamed:@"dvds.png"];

UITabBar *tabBar = self.tabBarController.tabBar;
UITabBarItem *item0 = [tabBar.items objectAtIndex:0];
UITabBarItem *item1 = [tabBar.items objectAtIndex:1];

[item0 initWithTitle:@"Box Office" image:iconBoxOffice selectedImage:selectedIconBoxOffice];
[item1 initWithTitle:@"Dvds" image:iconDvds selectedImage:selectedIconDvds];

如果您有更多标签,则可以继续添加更多项目。 *不要忘记将图像添加到项目中 *这是以编程方式完成的,而不是使用故事板

答案 4 :(得分:2)

如果要将自定义图像(图标和背景)添加到标签栏而不只是更改蓝色图标:

将以下代码添加到您的第一个UIView .m文件中。 如果您使用“选项卡式应用程序”项目重新开始,则称为FirstViewController.m 不要忘记添加图像(并将复选标记'将项目复制到目标组的文件夹')到项目中,并为图像选择更好的名称。

- (void)viewDidLoad
{
  [super viewDidLoad];

  UIImage *selectedImage0 = [UIImage imageNamed:@"customIcon0_unpressed.png"];
  UIImage *unselectedImage0 = [UIImage imageNamed:@"customIcon0_unpressed.png"];

  UIImage *selectedImage1 = [UIImage imageNamed:@"customIcon1_unpressed.png"];
  UIImage *unselectedImage1 = [UIImage imageNamed:@"customIcon1_unpressed.png"];

  UITabBar *tabBar = self.tabBarController.tabBar;
  UITabBarItem *item0 = [tabBar.items objectAtIndex:0];
  UITabBarItem *item1 = [tabBar.items objectAtIndex:1];

  [item0 setFinishedSelectedImage:selectedImage0 withFinishedUnselectedImage:unselectedImage0];
  [item1 setFinishedSelectedImage:selectedImage1 withFinishedUnselectedImage:unselectedImage1];
}

您可以在Ray Wenderlichs页面上找到有关此解决方案的更多信息以及大量其他精彩教程。