ios tabbar自定义图像

我在ios应用程序中工作我需要自定义tabbar就像这样

首先,我在导航控制器中创建了5个tabbbarcontroller控制器,然后将它们放在tabbbarcontroller

我搜索了这个问题,我找到了解决方案

 [self.tabBarItem setFinishedSelectedImage: withFinishedUnselectedImage:] 

但是对于iOS 5,我需要iOS 4和iOS 5的解决方案。

对于ios4中的自定义选项卡栏不可用代码,您需要为我们自定义选项卡栏,您可以参考此Que。

如何自定义tabbarcontroller

或者你也可以做像这样的完整标签栏图像的简单逻辑 在此处输入图像描述

在这里我已经在appdel做了一个图像视图完成方法,并在应用程序中这样做。

 self.imgV.frame=CGRectMake(0, 431, 320, 49); [self.tabbarcontroller.view addSubview:self.imgV]; - (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController{ NSUInteger index=[[tabBarController viewControllers] indexOfObject:viewController]; NSString *deviceType = [UIDevice currentDevice].model; NSLog(@"Device%@",deviceType); if(UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPad){ // self.imgV.frame=CGRectMake(0, 975, 768, 49); //[self.tabbarcontroller.view addSubview:self.imgV]; switch (index) { case 0: self.imgV.image=[UIImage imageNamed:@"reservation_tab~iPad.png"]; break; case 1: self.imgV.image=[UIImage imageNamed:@"place_order_tab~iPad.png"]; break; case 2: self.imgV.image=[UIImage imageNamed:@"location_tab~iPad.png"]; break; case 3: self.imgV.image=[UIImage imageNamed:@"favorite_tab~iPad.png"]; break; case 4: self.imgV.image=[UIImage imageNamed:@"signature_dishes_tab~iPad.png"]; break; case 5: self.imgV.image=[UIImage imageNamed:@"history_tab~iPad.png"]; break; case 6: self.imgV.image=[UIImage imageNamed:@"contact_us_tab~iPad.png"]; break; default: break; } } else{ switch (index) { case 0: self.imgV.image=[UIImage imageNamed:@"reservation_tab.png"]; break; case 1: self.imgV.image=[UIImage imageNamed:@"place_order_tab.png"]; break; case 2: self.imgV.image=[UIImage imageNamed:@"location_tab.png"]; break; case 3: self.imgV.image=[UIImage imageNamed:@"favorite_tab.png"]; break; case 4: self.imgV.image=[UIImage imageNamed:@"gallery_tab.png"]; break; default: break; } } return YES; } 

AppDelegate.m文件中,添加以下代码。 在那段代码中,我们创建了四个视图并将它们添加到Tab控制器。 这些视图目前是空的,因为我们在此项目中不需要任何内容​​。

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; UITabBarController *tabController = [[UITabBarController alloc] init]; UIViewController *viewController1 = [[UIViewController alloc] init]; UIViewController *viewController2 = [[UIViewController alloc] init]; UIViewController *viewController3 = [[UIViewController alloc] init]; UIViewController *viewController4 = [[UIViewController alloc] init]; tabController.viewControllers = [NSArray arrayWithObjects:viewController1, viewController2, viewController3, viewController4, nil]; self.window.rootViewController = tabController; [self.window makeKeyAndVisible]; return YES; } 

你可以在这里看到一个很好的教程

试试这个贴吧.h文件

  #import  @class MapViewController,MenuViewController; @interface UITabBar (ColorExtensions) - (void)recolorItemsWithColor:(UIColor *)color shadowColor:(UIColor *)shadowColor shadowOffset:(CGSize)shadowOffset shadowBlur:(CGFloat)shadowBlur; @end @interface UITabBarItem (Private) @property(retain, nonatomic) UIImage *selectedImage; - (void)_updateView; @end @interface SegmentedControlExampleAppDelegate : NSObject  { UIWindow * window; UINavigationController * navigationController; NSMutableArray *breads; NSMutableArray *categorys; NSMutableArray *collections; NSString *databaseName; NSString *databasePath; MapViewController *mapViewController; MenuViewController *wvTutorial; } @property (nonatomic, retain) IBOutlet UIWindow * window; @property (nonatomic, retain) UINavigationController * navigationController; @property (nonatomic,retain) NSMutableArray *breads; @property (nonatomic,retain) NSMutableArray *categorys; @property (nonatomic,retain) NSMutableArray *collections; @property (nonatomic, retain) UITabBarController *tabBarController; @property (nonatomic, retain) MenuViewController *wvTutorial; @end In .m file #import "SegmentedControlExampleAppDelegate.h" #import "SegmentManagingViewController.h" #import "sqlite3.h" #import "AtoZHomePageViewController.h" #import "CategoryViewHomePage.h" #import "CollectionsListHomePageViewController.h" #import "AboutUs.h" #import "StoreLocatorViewController.h" #import "UINavigationBar+CustomImage.h" #import "MenuViewController.h" @implementation UITabBar (ColorExtensions) - (void)recolorItemsWithColor:(UIColor *)color shadowColor:(UIColor *)shadowColor shadowOffset:(CGSize)shadowOffset shadowBlur:(CGFloat)shadowBlur { CGColorRef cgColor = [color CGColor]; CGColorRef cgShadowColor = [shadowColor CGColor]; for (UITabBarItem *item in [self items]) if ([item respondsToSelector:@selector(selectedImage)] && [item respondsToSelector:@selector(setSelectedImage:)] && [item respondsToSelector:@selector(_updateView)]) { CGRect contextRect; contextRect.origin.x = 0.0f; contextRect.origin.y = 0.0f; contextRect.size = [[item selectedImage] size]; // Retrieve source image and begin image context UIImage *itemImage = [item image]; CGSize itemImageSize = [itemImage size]; CGPoint itemImagePosition; itemImagePosition.x = ceilf((contextRect.size.width - itemImageSize.width) / 2); itemImagePosition.y = ceilf((contextRect.size.height - itemImageSize.height) / 2); UIGraphicsBeginImageContext(contextRect.size); CGContextRef c = UIGraphicsGetCurrentContext(); // Setup shadow CGContextSetShadowWithColor(c, shadowOffset, shadowBlur, cgShadowColor); // Setup transparency layer and clip to mask CGContextBeginTransparencyLayer(c, NULL); CGContextScaleCTM(c, 1.0, -1.0); CGContextClipToMask(c, CGRectMake(itemImagePosition.x, -itemImagePosition.y, itemImageSize.width, -itemImageSize.height), [itemImage CGImage]); // Fill and end the transparency layer CGContextSetFillColorWithColor(c, cgColor); contextRect.size.height = -contextRect.size.height; CGContextFillRect(c, contextRect); CGContextEndTransparencyLayer(c); // Set selected image and end context [item setSelectedImage:UIGraphicsGetImageFromCurrentImageContext()]; UIGraphicsEndImageContext(); // Update the view [item _updateView]; } } @end @implementation SegmentedControlExampleAppDelegate @synthesize window,tabBarController, navigationController,breads,categorys,collections,wvTutorial; - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { databaseName = @"ProductsConnect_Master.sqlite"; NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDir = [documentPaths objectAtIndex:0]; databasePath = [documentsDir stringByAppendingPathComponent:databaseName]; self.tabBarController = [[UITabBarController alloc] init]; UIViewController *viewController = [[AboutUs alloc] initWithNibName:@"AboutUs" bundle:nil]; UIViewController *viewController2 = [[StoreLocatorViewController alloc] initWithNibName:@"StoreLocatorViewController" bundle:nil]; //UIViewController *viewController3 = [[MenuViewController alloc] initWithNibName:@"MenuViewController" bundle:nil]; self.wvTutorial = [[MenuViewController alloc]initWithNibName:@"MenuViewController" bundle:nil]; SegmentManagingViewController * segmentManagingViewController = [[SegmentManagingViewController alloc] init]; self.navigationController = [[UINavigationController alloc] initWithRootViewController:segmentManagingViewController]; tabBarController.viewControllers = [NSArray arrayWithObjects:navigationController,viewController ,viewController2,wvTutorial , nil]; [[UITabBar appearance] setTintColor: [UIColor colorWithRed:120.0f/255.0f green:69.0f/255.0f blue:50.0f/255.0f alpha:1.0f]]; [[UITabBar appearance] setSelectedImageTintColor:[UIColor colorWithRed:255.0f/255.0f green:252.0f/255.0f blue:235.0f/255.0f alpha:1.0f]]; //[[UITabBar appearance] // setBackgroundColor: [UIColor colorWithRed:255.0f/255.0f green:252.0f/255.0f blue:235.0f/255.0f alpha:0.8f]]; navigationController.title = NSLocalizedString(@"HomePage", @"HomePage"); navigationController.tabBarItem.image = [UIImage imageNamed:@"logoSmall"]; [[UIApplication sharedApplication] setStatusBarHidden:YES]; UIImage *navImage = [UIImage imageNamed:@"logoSmall.png"]; // self.navigationItem.setImage: navImage; [[navigationController navigationBar] performSelectorInBackground:@selector(setBackgroundImage:) withObject:navImage]; // UIImage *navImage = [UIImage imageNamed:@"logoSmall.png"]; //[[navigationController navigationBar] performSelectorInBackground:@selector(setBackgroundImage:) withObject:navImage]; [self.window addSubview:tabBarController.view]; [segmentManagingViewController release]; //[window addSubview:self.navigationController.view]; [window makeKeyAndVisible]; return YES; } 

我用这个代码对我来说很好。