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

我是iPhone新手,我需要把一个自定义的图像图标放在标签栏。但它只显示默认的颜色(黑色和蓝色)。帮我克服这个错误的朋友…?

在应用程序中添加图像,

和见附图

在这里输入图像说明

在viewDidLoad中使用这段代码

UIImage *selectedImage0 = [UIImage imageNamed:@"selected.png"]; UIImage *unselectedImage0 = [UIImage imageNamed:@"unselected.png"]; UITabBarItem *item0 = [tabBar.items objectAtIndex:0]; [item0 setFinishedSelectedImage:selectedImage0 withFinishedUnselectedImage:unselectedImage0]; 

在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控制器委托方法

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

你可以使用这个代码片段的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]; 

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

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

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

 - (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页面find关于此解决scheme的更多信息以及其他大量教程。