diff --git a/CustomTabBar/Classes/CustomTabBar.h b/CustomTabBar/Classes/CustomTabBar.h index 5a6462a..e8e3b8a 100644 --- a/CustomTabBar/Classes/CustomTabBar.h +++ b/CustomTabBar/Classes/CustomTabBar.h @@ -30,8 +30,8 @@ - (UIImage*) imageFor:(CustomTabBar*)tabBar atIndex:(NSUInteger)itemIndex; - (UIImage*) backgroundImage; -- (UIImage*) selectedItemBackgroundImage; -- (UIImage*) glowImage; +- (UIImage*) selectedItemBackgroundImageWith:(NSInteger)index; +- (UIImage*) glowImageWith:(NSInteger)index; - (UIImage*) selectedItemImage; - (UIImage*) tabBarArrowImage; @@ -53,7 +53,7 @@ - (void) selectItemAtIndex:(NSInteger)index; - (void) glowItemAtIndex:(NSInteger)index; -- (void) removeGlowAtIndex:(NSInteger)index; +- (void) hideGlow; - (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration; diff --git a/CustomTabBar/Classes/CustomTabBar.m b/CustomTabBar/Classes/CustomTabBar.m index 9503e73..602ebad 100644 --- a/CustomTabBar/Classes/CustomTabBar.m +++ b/CustomTabBar/Classes/CustomTabBar.m @@ -165,37 +165,60 @@ - (void) selectItemAtIndex:(NSInteger)index [self dimAllButtonsExcept:button]; } -// Add a glow at the bottom of the specified item -- (void) glowItemAtIndex:(NSInteger)index -{ - // Get the right button. We'll use to calculate where to put the glow - UIButton* button = [buttons objectAtIndex:index]; - - // Ask the delegate for the glow image - UIImage* glowImage = [delegate glowImage]; - - // Create the image view that will hold the glow image - UIImageView* glowImageView = [[[UIImageView alloc] initWithImage:glowImage] autorelease]; - - // Center the glow image at the center of the button horizontally and at the bottom of the button vertically - glowImageView.frame = CGRectMake(button.frame.size.width/2.0 - glowImage.size.width/2.0, button.frame.origin.y + button.frame.size.height - glowImage.size.height, glowImage.size.width, glowImage.size.height); - - // Set the glow image view's tag so we can find it later when we want to remove the glow - glowImageView.tag = GLOW_IMAGE_TAG; - - // Add the glow image view to the button - [button addSubview:glowImageView]; +- (void) hideGlow { + UIImageView* oldGlowImageView = (UIImageView*)[self viewWithTag:GLOW_IMAGE_TAG]; + [UIView animateWithDuration:0.2 animations:^(void) { + oldGlowImageView.alpha = 0; + }]; } -// Remove the glow at the bottom of the specified item -- (void) removeGlowAtIndex:(NSInteger)index -{ - // Find the right button - UIButton* button = [buttons objectAtIndex:index]; - // Find the glow image view - UIImageView* glowImageView = (UIImageView*)[button viewWithTag:GLOW_IMAGE_TAG]; - // Remove it from the button - [glowImageView removeFromSuperview]; +- (void) glowItemAtIndex:(NSInteger)index { + // Get the right button. We'll use to calculate where to put the glow + UIButton* button = [buttons objectAtIndex:index]; + + // Ask the delegate for the glow image + UIImage* glowImage = [delegate glowImageWith:(NSInteger)index]; + + // Create the image view that will hold the glow image + UIImageView* newGlowImageView = [[[UIImageView alloc] initWithImage:glowImage] autorelease]; + // Center the glow image at the center of the button horizontally and at the bottom of the button vertically + newGlowImageView.frame = CGRectMake(button.frame.size.width/2.0 - glowImage.size.width/2.0, button.frame.origin.y + button.frame.size.height - glowImage.size.height, glowImage.size.width, glowImage.size.height); + newGlowImageView.alpha = 0; + + [button addSubview:newGlowImageView]; + + UIImageView* oldGlowImageView = (UIImageView*)[self viewWithTag:GLOW_IMAGE_TAG]; + newGlowImageView.tag = GLOW_IMAGE_TAG; + + if (oldGlowImageView) { + // oldGlowImageView already start hiding with animation + if (oldGlowImageView.alpha != 0) { + [UIView animateWithDuration:0.05 animations:^(void) { + oldGlowImageView.alpha = 0; + newGlowImageView.alpha = 0.3; + } completion:^(BOOL finished) { + [UIView animateWithDuration:0.15 animations:^(void) { + newGlowImageView.alpha = 1.0; + } completion:^(BOOL finished) { + [oldGlowImageView removeFromSuperview]; + }]; + }]; + } else { + [UIView animateWithDuration:0.1 animations:^(void) { + newGlowImageView.alpha = 1.0; + } completion:^(BOOL finished) { + [oldGlowImageView removeFromSuperview]; + }]; + } + } else { + [UIView animateWithDuration:0.05 animations:^(void) { + newGlowImageView.alpha = 0.3; + } completion:^(BOOL finished) { + [UIView animateWithDuration:0.1 animations:^(void) { + newGlowImageView.alpha = 1.0; + }]; + }]; + } } - (CGFloat) horizontalLocationFor:(NSUInteger)tabIndex @@ -220,7 +243,7 @@ - (void) addTabBarArrowAtIndex:(NSUInteger)itemIndex tabBarArrow.tag = TAB_ARROW_IMAGE_TAG; // To get the vertical location we go up by the height of arrow and then come back down 2 pixels so the arrow is slightly on top of the tab bar. CGFloat verticalLocation = -tabBarArrowImage.size.height + 2; - tabBarArrow.frame = CGRectMake([self horizontalLocationFor:itemIndex], verticalLocation, tabBarArrowImage.size.width, tabBarArrowImage.size.height); + tabBarArrow.frame = CGRectMake([self horizontalLocationFor:itemIndex] - 5, verticalLocation, tabBarArrowImage.size.width, tabBarArrowImage.size.height); [self addSubview:tabBarArrow]; } @@ -237,7 +260,7 @@ - (UIButton*) buttonAtIndex:(NSUInteger)itemIndex width:(CGFloat)width // Create the normal state image by converting the image's background to gray UIImage* buttonImage = [self tabBarImage:rawButtonImage size:button.frame.size backgroundImage:nil]; // And create the pressed state image by converting the image's background to the background image we get from the delegate - UIImage* buttonPressedImage = [self tabBarImage:rawButtonImage size:button.frame.size backgroundImage:[delegate selectedItemBackgroundImage]]; + UIImage* buttonPressedImage = [self tabBarImage:rawButtonImage size:button.frame.size backgroundImage:[delegate selectedItemBackgroundImageWith:itemIndex]]; // Set the gray & blue images as the button states [button setImage:buttonImage forState:UIControlStateNormal]; diff --git a/CustomTabBar/Classes/CustomTabBarAppDelegate.h b/CustomTabBar/Classes/CustomTabBarAppDelegate.h index 71ff909..a3b7687 100644 --- a/CustomTabBar/Classes/CustomTabBarAppDelegate.h +++ b/CustomTabBar/Classes/CustomTabBarAppDelegate.h @@ -35,7 +35,7 @@ } @property (nonatomic, retain) IBOutlet UIWindow *window; -@property (nonatomic, retain) IBOutlet CustomTabBarViewController *viewController; +@property (nonatomic, retain) CustomTabBarViewController *viewController; @end diff --git a/CustomTabBar/Classes/CustomTabBarAppDelegate.m b/CustomTabBar/Classes/CustomTabBarAppDelegate.m index a8b37e9..13d2cda 100644 --- a/CustomTabBar/Classes/CustomTabBarAppDelegate.m +++ b/CustomTabBar/Classes/CustomTabBarAppDelegate.m @@ -37,12 +37,28 @@ @implementation CustomTabBarAppDelegate #pragma mark - #pragma mark Application lifecycle -- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { +- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { + UIViewController *detailController1 = [[[UIViewController alloc] init] autorelease]; + detailController1.view.backgroundColor = [UIColor redColor]; - // Override point for customization after application launch. + UIViewController *detailController2 = [[[UIViewController alloc] init] autorelease]; + detailController2.view.backgroundColor = [UIColor greenColor]; + + UIViewController *detailController3 = [[[UIViewController alloc] init] autorelease]; + detailController3.view.backgroundColor = [UIColor blueColor]; + + UIViewController *detailController4 = [[[UIViewController alloc] init] autorelease]; + detailController4.view.backgroundColor = [UIColor cyanColor]; + + UIViewController *detailController5 = [[[UIViewController alloc] init] autorelease]; + detailController5.view.backgroundColor = [UIColor purpleColor]; + + CustomTabBarViewController* customTabBarViewController = [[CustomTabBarViewController alloc] initWihViewControllers:[NSArray arrayWithObjects:detailController1, detailController2, detailController3, detailController4, detailController5, nil] +imagesNames:[NSArray arrayWithObjects:@"chat.png", @"compose-at.png", @"messages.png", @"magnifying-glass.png", @"more.png", nil]]; + self.viewController = customTabBarViewController; + [customTabBarViewController release]; - // Add the view controller's view to the window and display. - [self.window addSubview:viewController.view]; + self.window.rootViewController = self.viewController; [self.window makeKeyAndVisible]; return YES; diff --git a/CustomTabBar/Classes/CustomTabBarViewController.h b/CustomTabBar/Classes/CustomTabBarViewController.h index ed74937..71b89d3 100644 --- a/CustomTabBar/Classes/CustomTabBarViewController.h +++ b/CustomTabBar/Classes/CustomTabBarViewController.h @@ -27,11 +27,14 @@ #import "CustomTabBar.h" -@interface CustomTabBarViewController : UIViewController -{ - CustomTabBar* tabBar; +@interface CustomTabBarViewController : UIViewController { + CustomTabBar* tabBar; + NSTimer* glowTimer; } +- (id)initWihViewControllers:(NSArray*)viewControllers imagesNames:(NSArray*)imagesNames; + +@property (nonatomic, assign) NSInteger currentIndex; @property (nonatomic, retain) CustomTabBar* tabBar; @end diff --git a/CustomTabBar/Classes/CustomTabBarViewController.m b/CustomTabBar/Classes/CustomTabBarViewController.m index 7a430da..697c66e 100644 --- a/CustomTabBar/Classes/CustomTabBarViewController.m +++ b/CustomTabBar/Classes/CustomTabBarViewController.m @@ -32,51 +32,47 @@ static NSArray* tabBarItems = nil; @implementation CustomTabBarViewController -@synthesize tabBar; - -- (void) awakeFromNib -{ - // Set up some fake view controllers each with a different background color so we can visually see the controllers getting swapped around - UIViewController *detailController1 = [[[UIViewController alloc] init] autorelease]; - detailController1.view.backgroundColor = [UIColor redColor]; - - UIViewController *detailController2 = [[[UIViewController alloc] init] autorelease]; - detailController2.view.backgroundColor = [UIColor greenColor]; - - UIViewController *detailController3 = [[[UIViewController alloc] init] autorelease]; - detailController3.view.backgroundColor = [UIColor blueColor]; - - UIViewController *detailController4 = [[[UIViewController alloc] init] autorelease]; - detailController4.view.backgroundColor = [UIColor cyanColor]; - - UIViewController *detailController5 = [[[UIViewController alloc] init] autorelease]; - detailController5.view.backgroundColor = [UIColor purpleColor]; - - tabBarItems = [[NSArray arrayWithObjects: - [NSDictionary dictionaryWithObjectsAndKeys:@"chat.png", @"image", detailController1, @"viewController", nil], - [NSDictionary dictionaryWithObjectsAndKeys:@"compose-at.png", @"image", detailController2, @"viewController", nil], - [NSDictionary dictionaryWithObjectsAndKeys:@"messages.png", @"image", detailController3, @"viewController", nil], - [NSDictionary dictionaryWithObjectsAndKeys:@"magnifying-glass.png", @"image", detailController4, @"viewController", nil], - [NSDictionary dictionaryWithObjectsAndKeys:@"more.png", @"image", detailController5, @"viewController", nil], nil] retain]; +@synthesize currentIndex, tabBar; + + +- (id)initWihViewControllers:(NSArray*)viewControllers imagesNames:(NSArray*)imagesNames { + if ([viewControllers count] != [imagesNames count]) { + return nil; + } else { + self = [super init]; + if (self) { + NSMutableArray* dictionarys = [NSMutableArray new]; + + int count = 0; + for (NSString* imageName in imagesNames) { + UIViewController* vc = [viewControllers objectAtIndex:count]; + [dictionarys addObject:[NSDictionary dictionaryWithObjectsAndKeys:imageName, @"image", vc, @"viewController", nil]]; + count++; + } + + tabBarItems = dictionarys; + + // Use the TabBarGradient image to figure out the tab bar's height (22x2=44) + UIImage* tabBarGradient = [UIImage imageNamed:@"TabBarGradient.png"]; + + // Create a custom tab bar passing in the number of items, the size of each item and setting ourself as the delegate + self.tabBar = [[[CustomTabBar alloc] initWithItemCount:tabBarItems.count itemSize:CGSizeMake(self.view.frame.size.width/tabBarItems.count, tabBarGradient.size.height*2) tag:0 delegate:self] autorelease]; + + // Place the tab bar at the bottom of our view + tabBar.frame = CGRectMake(0,self.view.frame.size.height-(tabBarGradient.size.height*2),self.view.frame.size.width, tabBarGradient.size.height*2); + [self.view addSubview:tabBar]; + + // Select the first tab + [tabBar selectItemAtIndex:0]; + [self touchDownAtItemAtIndex:0]; + } + return self; + } } - (void)viewDidLoad { [super viewDidLoad]; - - // Use the TabBarGradient image to figure out the tab bar's height (22x2=44) - UIImage* tabBarGradient = [UIImage imageNamed:@"TabBarGradient.png"]; - - // Create a custom tab bar passing in the number of items, the size of each item and setting ourself as the delegate - self.tabBar = [[[CustomTabBar alloc] initWithItemCount:tabBarItems.count itemSize:CGSizeMake(self.view.frame.size.width/tabBarItems.count, tabBarGradient.size.height*2) tag:0 delegate:self] autorelease]; - - // Place the tab bar at the bottom of our view - tabBar.frame = CGRectMake(0,self.view.frame.size.height-(tabBarGradient.size.height*2),self.view.frame.size.width, tabBarGradient.size.height*2); - [self.view addSubview:tabBar]; - - // Select the first tab - [tabBar selectItemAtIndex:0]; - [self touchDownAtItemAtIndex:0]; } #pragma mark - @@ -116,15 +112,15 @@ - (UIImage*) backgroundImage } // This is the blue background shown for selected tab bar items -- (UIImage*) selectedItemBackgroundImage +- (UIImage*) selectedItemBackgroundImageWith:(NSInteger)index { - return [UIImage imageNamed:@"TabBarItemSelectedBackground.png"]; + return [UIImage imageNamed:[NSString stringWithFormat:@"TabBarItemSelectedBackground%d.png", index+1]]; } // This is the glow image shown at the bottom of a tab bar to indicate there are new items -- (UIImage*) glowImage +- (UIImage*) glowImageWith:(NSInteger)index { - UIImage* tabBarGlow = [UIImage imageNamed:@"TabBarGlow.png"]; + UIImage* tabBarGlow = [UIImage imageNamed:[NSString stringWithFormat:@"TabBarGlow%d.png", index+1]]; // Create a new image using the TabBarGlow image but offset 4 pixels down UIGraphicsBeginImageContextWithOptions(CGSizeMake(tabBarGlow.size.width, tabBarGlow.size.height-4.0), NO, 0.0); @@ -162,43 +158,72 @@ - (UIImage*) tabBarArrowImage return [UIImage imageNamed:@"TabBarNipple.png"]; } -- (void) touchDownAtItemAtIndex:(NSUInteger)itemIndex -{ - // Remove the current view controller's view - UIView* currentView = [self.view viewWithTag:SELECTED_VIEW_CONTROLLER_TAG]; - [currentView removeFromSuperview]; - - // Get the right view controller - NSDictionary* data = [tabBarItems objectAtIndex:itemIndex]; - UIViewController* viewController = [data objectForKey:@"viewController"]; - - // Use the TabBarGradient image to figure out the tab bar's height (22x2=44) - UIImage* tabBarGradient = [UIImage imageNamed:@"TabBarGradient.png"]; +- (void)stopGlowTimer { + if([glowTimer isValid]) { + [glowTimer invalidate]; + } + + [glowTimer release]; + glowTimer = nil; +} - // Set the view controller's frame to account for the tab bar - viewController.view.frame = CGRectMake(0,0,self.view.bounds.size.width, self.view.bounds.size.height-(tabBarGradient.size.height*2)); +- (void)startGlowTimer:(NSInteger)itemIndex { + // Hide glow than we start timer first time + if (!glowTimer || ![glowTimer isValid]) { + [tabBar hideGlow]; + } + + [self stopGlowTimer]; + glowTimer = [[NSTimer alloc] initWithFireDate:[NSDate dateWithTimeIntervalSinceNow:0.2] interval:0.2 target:self selector:@selector(addGlowTimerFireMethod:) userInfo:[NSNumber numberWithInteger:itemIndex] repeats:NO]; + [[NSRunLoop currentRunLoop] addTimer:glowTimer forMode:NSDefaultRunLoopMode]; +} - // Se the tag so we can find it later - viewController.view.tag = SELECTED_VIEW_CONTROLLER_TAG; - - // Add the new view controller's view - [self.view insertSubview:viewController.view belowSubview:tabBar]; - - // In 1 second glow the selected tab - [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(addGlowTimerFireMethod:) userInfo:[NSNumber numberWithInteger:itemIndex] repeats:NO]; - +- (void) touchDownAtItemAtIndex:(NSUInteger)itemIndex { + NSDictionary* data = [tabBarItems objectAtIndex:self.currentIndex]; + UIViewController* previousViewController = [data objectForKey:@"viewController"]; + UIView* currentView = [self.view viewWithTag:SELECTED_VIEW_CONTROLLER_TAG]; + + // check on tapping same tab only on first load + if (itemIndex == self.currentIndex && currentView) { + if ([previousViewController isKindOfClass:[UINavigationController class]]) { + UINavigationController* navigationVC = (UINavigationController*)previousViewController; + [navigationVC popToRootViewControllerAnimated:YES]; + } + } else { + data = [tabBarItems objectAtIndex:itemIndex]; + UIViewController* nextViewController = [data objectForKey:@"viewController"]; + + if (currentView == previousViewController.view) { + [previousViewController viewWillDisappear:NO]; + } + [nextViewController viewWillAppear:NO]; + + // Remove the current view controller's view + [currentView removeFromSuperview]; + + // Use the TabBarGradient image to figure out the tab bar's height (22x2=44) + UIImage* tabBarGradient = [UIImage imageNamed:@"TabBarGradient.png"]; + + // Set the view controller's frame to account for the tab bar + nextViewController.view.frame = CGRectMake(0,0,self.view.bounds.size.width, self.view.bounds.size.height-(tabBarGradient.size.height*2)); + + // Se the tag so we can find it later + nextViewController.view.tag = SELECTED_VIEW_CONTROLLER_TAG; + + // Add the new view controller's view + self.currentIndex = itemIndex; + [self.view insertSubview:nextViewController.view belowSubview:tabBar]; + + [previousViewController viewDidDisappear:NO]; + [nextViewController viewDidAppear:NO]; + + // In 1 second glow the selected tab + [self startGlowTimer:itemIndex]; + } } -- (void)addGlowTimerFireMethod:(NSTimer*)theTimer -{ - // Remove the glow from all tab bar items - for (NSUInteger i = 0 ; i < tabBarItems.count ; i++) - { - [tabBar removeGlowAtIndex:i]; - } - - // Then add it to this tab bar item - [tabBar glowItemAtIndex:[[theTimer userInfo] integerValue]]; +- (void)addGlowTimerFireMethod:(NSTimer*)theTimer { + [tabBar glowItemAtIndex:[[theTimer userInfo] integerValue]]; } - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation @@ -230,10 +255,10 @@ - (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrie currentView.frame = CGRectMake(0,0,width, height-(tabBarGradient.size.height*2)); } -- (void)dealloc -{ - [super dealloc]; - [tabBar release]; +- (void)dealloc { + [self stopGlowTimer]; + [super dealloc]; + [tabBar release]; } @end diff --git a/CustomTabBar/CustomTabBar.xcodeproj/project.pbxproj b/CustomTabBar/CustomTabBar.xcodeproj/project.pbxproj index 61e7434..039a97b 100755 --- a/CustomTabBar/CustomTabBar.xcodeproj/project.pbxproj +++ b/CustomTabBar/CustomTabBar.xcodeproj/project.pbxproj @@ -26,16 +26,32 @@ 7F48D57E12D1B88500DE44F6 /* messages@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 7F48D56A12D1B88500DE44F6 /* messages@2x.png */; }; 7F48D57F12D1B88500DE44F6 /* more.png in Resources */ = {isa = PBXBuildFile; fileRef = 7F48D56B12D1B88500DE44F6 /* more.png */; }; 7F48D58012D1B88500DE44F6 /* more@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 7F48D56C12D1B88500DE44F6 /* more@2x.png */; }; - 7F48D58112D1B88500DE44F6 /* TabBarGlow.png in Resources */ = {isa = PBXBuildFile; fileRef = 7F48D56D12D1B88500DE44F6 /* TabBarGlow.png */; }; - 7F48D58212D1B88500DE44F6 /* TabBarGlow@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 7F48D56E12D1B88500DE44F6 /* TabBarGlow@2x.png */; }; 7F48D58312D1B88500DE44F6 /* TabBarGradient.png in Resources */ = {isa = PBXBuildFile; fileRef = 7F48D56F12D1B88500DE44F6 /* TabBarGradient.png */; }; 7F48D58412D1B88500DE44F6 /* TabBarGradient@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 7F48D57012D1B88500DE44F6 /* TabBarGradient@2x.png */; }; - 7F48D58512D1B88500DE44F6 /* TabBarItemSelectedBackground.png in Resources */ = {isa = PBXBuildFile; fileRef = 7F48D57112D1B88500DE44F6 /* TabBarItemSelectedBackground.png */; }; - 7F48D58612D1B88500DE44F6 /* TabBarItemSelectedBackground@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 7F48D57212D1B88500DE44F6 /* TabBarItemSelectedBackground@2x.png */; }; 7F48D58712D1B88500DE44F6 /* TabBarNipple.png in Resources */ = {isa = PBXBuildFile; fileRef = 7F48D57312D1B88500DE44F6 /* TabBarNipple.png */; }; 7F48D58812D1B88500DE44F6 /* TabBarNipple@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 7F48D57412D1B88500DE44F6 /* TabBarNipple@2x.png */; }; 7F48D58912D1B88500DE44F6 /* TabBarSelection.png in Resources */ = {isa = PBXBuildFile; fileRef = 7F48D57512D1B88500DE44F6 /* TabBarSelection.png */; }; 7F48D58A12D1B88500DE44F6 /* TabBarSelection@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 7F48D57612D1B88500DE44F6 /* TabBarSelection@2x.png */; }; + FCD4F15B13FE5365003BC1C5 /* TabBarItemSelectedBackground1.png in Resources */ = {isa = PBXBuildFile; fileRef = FCD4F15113FE5364003BC1C5 /* TabBarItemSelectedBackground1.png */; }; + FCD4F15C13FE5365003BC1C5 /* TabBarItemSelectedBackground1@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = FCD4F15213FE5364003BC1C5 /* TabBarItemSelectedBackground1@2x.png */; }; + FCD4F15D13FE5365003BC1C5 /* TabBarItemSelectedBackground2.png in Resources */ = {isa = PBXBuildFile; fileRef = FCD4F15313FE5364003BC1C5 /* TabBarItemSelectedBackground2.png */; }; + FCD4F15E13FE5365003BC1C5 /* TabBarItemSelectedBackground2@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = FCD4F15413FE5364003BC1C5 /* TabBarItemSelectedBackground2@2x.png */; }; + FCD4F15F13FE5365003BC1C5 /* TabBarItemSelectedBackground3.png in Resources */ = {isa = PBXBuildFile; fileRef = FCD4F15513FE5365003BC1C5 /* TabBarItemSelectedBackground3.png */; }; + FCD4F16013FE5365003BC1C5 /* TabBarItemSelectedBackground3@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = FCD4F15613FE5365003BC1C5 /* TabBarItemSelectedBackground3@2x.png */; }; + FCD4F16113FE5365003BC1C5 /* TabBarItemSelectedBackground4.png in Resources */ = {isa = PBXBuildFile; fileRef = FCD4F15713FE5365003BC1C5 /* TabBarItemSelectedBackground4.png */; }; + FCD4F16213FE5365003BC1C5 /* TabBarItemSelectedBackground4@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = FCD4F15813FE5365003BC1C5 /* TabBarItemSelectedBackground4@2x.png */; }; + FCD4F16313FE5365003BC1C5 /* TabBarItemSelectedBackground5.png in Resources */ = {isa = PBXBuildFile; fileRef = FCD4F15913FE5365003BC1C5 /* TabBarItemSelectedBackground5.png */; }; + FCD4F16413FE5365003BC1C5 /* TabBarItemSelectedBackground5@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = FCD4F15A13FE5365003BC1C5 /* TabBarItemSelectedBackground5@2x.png */; }; + FCD4F17413FE8079003BC1C5 /* TabBarGlow1.png in Resources */ = {isa = PBXBuildFile; fileRef = FCD4F16A13FE8079003BC1C5 /* TabBarGlow1.png */; }; + FCD4F17513FE8079003BC1C5 /* TabBarGlow1@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = FCD4F16B13FE8079003BC1C5 /* TabBarGlow1@2x.png */; }; + FCD4F17613FE8079003BC1C5 /* TabBarGlow2.png in Resources */ = {isa = PBXBuildFile; fileRef = FCD4F16C13FE8079003BC1C5 /* TabBarGlow2.png */; }; + FCD4F17713FE8079003BC1C5 /* TabBarGlow2@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = FCD4F16D13FE8079003BC1C5 /* TabBarGlow2@2x.png */; }; + FCD4F17813FE8079003BC1C5 /* TabBarGlow3.png in Resources */ = {isa = PBXBuildFile; fileRef = FCD4F16E13FE8079003BC1C5 /* TabBarGlow3.png */; }; + FCD4F17913FE8079003BC1C5 /* TabBarGlow3@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = FCD4F16F13FE8079003BC1C5 /* TabBarGlow3@2x.png */; }; + FCD4F17A13FE8079003BC1C5 /* TabBarGlow4.png in Resources */ = {isa = PBXBuildFile; fileRef = FCD4F17013FE8079003BC1C5 /* TabBarGlow4.png */; }; + FCD4F17B13FE8079003BC1C5 /* TabBarGlow4@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = FCD4F17113FE8079003BC1C5 /* TabBarGlow4@2x.png */; }; + FCD4F17C13FE8079003BC1C5 /* TabBarGlow5.png in Resources */ = {isa = PBXBuildFile; fileRef = FCD4F17213FE8079003BC1C5 /* TabBarGlow5.png */; }; + FCD4F17D13FE8079003BC1C5 /* TabBarGlow5@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = FCD4F17313FE8079003BC1C5 /* TabBarGlow5@2x.png */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ @@ -63,17 +79,33 @@ 7F48D56A12D1B88500DE44F6 /* messages@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "messages@2x.png"; sourceTree = ""; }; 7F48D56B12D1B88500DE44F6 /* more.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = more.png; sourceTree = ""; }; 7F48D56C12D1B88500DE44F6 /* more@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "more@2x.png"; sourceTree = ""; }; - 7F48D56D12D1B88500DE44F6 /* TabBarGlow.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = TabBarGlow.png; sourceTree = ""; }; - 7F48D56E12D1B88500DE44F6 /* TabBarGlow@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "TabBarGlow@2x.png"; sourceTree = ""; }; 7F48D56F12D1B88500DE44F6 /* TabBarGradient.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = TabBarGradient.png; sourceTree = ""; }; 7F48D57012D1B88500DE44F6 /* TabBarGradient@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "TabBarGradient@2x.png"; sourceTree = ""; }; - 7F48D57112D1B88500DE44F6 /* TabBarItemSelectedBackground.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = TabBarItemSelectedBackground.png; sourceTree = ""; }; - 7F48D57212D1B88500DE44F6 /* TabBarItemSelectedBackground@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "TabBarItemSelectedBackground@2x.png"; sourceTree = ""; }; 7F48D57312D1B88500DE44F6 /* TabBarNipple.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = TabBarNipple.png; sourceTree = ""; }; 7F48D57412D1B88500DE44F6 /* TabBarNipple@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "TabBarNipple@2x.png"; sourceTree = ""; }; 7F48D57512D1B88500DE44F6 /* TabBarSelection.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = TabBarSelection.png; sourceTree = ""; }; 7F48D57612D1B88500DE44F6 /* TabBarSelection@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "TabBarSelection@2x.png"; sourceTree = ""; }; 8D1107310486CEB800E47090 /* CustomTabBar-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "CustomTabBar-Info.plist"; plistStructureDefinitionIdentifier = "com.apple.xcode.plist.structure-definition.iphone.info-plist"; sourceTree = ""; }; + FCD4F15113FE5364003BC1C5 /* TabBarItemSelectedBackground1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = TabBarItemSelectedBackground1.png; sourceTree = ""; }; + FCD4F15213FE5364003BC1C5 /* TabBarItemSelectedBackground1@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "TabBarItemSelectedBackground1@2x.png"; sourceTree = ""; }; + FCD4F15313FE5364003BC1C5 /* TabBarItemSelectedBackground2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = TabBarItemSelectedBackground2.png; sourceTree = ""; }; + FCD4F15413FE5364003BC1C5 /* TabBarItemSelectedBackground2@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "TabBarItemSelectedBackground2@2x.png"; sourceTree = ""; }; + FCD4F15513FE5365003BC1C5 /* TabBarItemSelectedBackground3.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = TabBarItemSelectedBackground3.png; sourceTree = ""; }; + FCD4F15613FE5365003BC1C5 /* TabBarItemSelectedBackground3@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "TabBarItemSelectedBackground3@2x.png"; sourceTree = ""; }; + FCD4F15713FE5365003BC1C5 /* TabBarItemSelectedBackground4.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = TabBarItemSelectedBackground4.png; sourceTree = ""; }; + FCD4F15813FE5365003BC1C5 /* TabBarItemSelectedBackground4@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "TabBarItemSelectedBackground4@2x.png"; sourceTree = ""; }; + FCD4F15913FE5365003BC1C5 /* TabBarItemSelectedBackground5.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = TabBarItemSelectedBackground5.png; sourceTree = ""; }; + FCD4F15A13FE5365003BC1C5 /* TabBarItemSelectedBackground5@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "TabBarItemSelectedBackground5@2x.png"; sourceTree = ""; }; + FCD4F16A13FE8079003BC1C5 /* TabBarGlow1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = TabBarGlow1.png; sourceTree = ""; }; + FCD4F16B13FE8079003BC1C5 /* TabBarGlow1@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "TabBarGlow1@2x.png"; sourceTree = ""; }; + FCD4F16C13FE8079003BC1C5 /* TabBarGlow2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = TabBarGlow2.png; sourceTree = ""; }; + FCD4F16D13FE8079003BC1C5 /* TabBarGlow2@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "TabBarGlow2@2x.png"; sourceTree = ""; }; + FCD4F16E13FE8079003BC1C5 /* TabBarGlow3.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = TabBarGlow3.png; sourceTree = ""; }; + FCD4F16F13FE8079003BC1C5 /* TabBarGlow3@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "TabBarGlow3@2x.png"; sourceTree = ""; }; + FCD4F17013FE8079003BC1C5 /* TabBarGlow4.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = TabBarGlow4.png; sourceTree = ""; }; + FCD4F17113FE8079003BC1C5 /* TabBarGlow4@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "TabBarGlow4@2x.png"; sourceTree = ""; }; + FCD4F17213FE8079003BC1C5 /* TabBarGlow5.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = TabBarGlow5.png; sourceTree = ""; }; + FCD4F17313FE8079003BC1C5 /* TabBarGlow5@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "TabBarGlow5@2x.png"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -156,6 +188,26 @@ 7F48D56212D1B88500DE44F6 /* Images */ = { isa = PBXGroup; children = ( + FCD4F16A13FE8079003BC1C5 /* TabBarGlow1.png */, + FCD4F16B13FE8079003BC1C5 /* TabBarGlow1@2x.png */, + FCD4F16C13FE8079003BC1C5 /* TabBarGlow2.png */, + FCD4F16D13FE8079003BC1C5 /* TabBarGlow2@2x.png */, + FCD4F16E13FE8079003BC1C5 /* TabBarGlow3.png */, + FCD4F16F13FE8079003BC1C5 /* TabBarGlow3@2x.png */, + FCD4F17013FE8079003BC1C5 /* TabBarGlow4.png */, + FCD4F17113FE8079003BC1C5 /* TabBarGlow4@2x.png */, + FCD4F17213FE8079003BC1C5 /* TabBarGlow5.png */, + FCD4F17313FE8079003BC1C5 /* TabBarGlow5@2x.png */, + FCD4F15113FE5364003BC1C5 /* TabBarItemSelectedBackground1.png */, + FCD4F15213FE5364003BC1C5 /* TabBarItemSelectedBackground1@2x.png */, + FCD4F15313FE5364003BC1C5 /* TabBarItemSelectedBackground2.png */, + FCD4F15413FE5364003BC1C5 /* TabBarItemSelectedBackground2@2x.png */, + FCD4F15513FE5365003BC1C5 /* TabBarItemSelectedBackground3.png */, + FCD4F15613FE5365003BC1C5 /* TabBarItemSelectedBackground3@2x.png */, + FCD4F15713FE5365003BC1C5 /* TabBarItemSelectedBackground4.png */, + FCD4F15813FE5365003BC1C5 /* TabBarItemSelectedBackground4@2x.png */, + FCD4F15913FE5365003BC1C5 /* TabBarItemSelectedBackground5.png */, + FCD4F15A13FE5365003BC1C5 /* TabBarItemSelectedBackground5@2x.png */, 7F48D56312D1B88500DE44F6 /* chat.png */, 7F48D56412D1B88500DE44F6 /* chat@2x.png */, 7F48D56512D1B88500DE44F6 /* compose-at.png */, @@ -166,12 +218,8 @@ 7F48D56A12D1B88500DE44F6 /* messages@2x.png */, 7F48D56B12D1B88500DE44F6 /* more.png */, 7F48D56C12D1B88500DE44F6 /* more@2x.png */, - 7F48D56D12D1B88500DE44F6 /* TabBarGlow.png */, - 7F48D56E12D1B88500DE44F6 /* TabBarGlow@2x.png */, 7F48D56F12D1B88500DE44F6 /* TabBarGradient.png */, 7F48D57012D1B88500DE44F6 /* TabBarGradient@2x.png */, - 7F48D57112D1B88500DE44F6 /* TabBarItemSelectedBackground.png */, - 7F48D57212D1B88500DE44F6 /* TabBarItemSelectedBackground@2x.png */, 7F48D57312D1B88500DE44F6 /* TabBarNipple.png */, 7F48D57412D1B88500DE44F6 /* TabBarNipple@2x.png */, 7F48D57512D1B88500DE44F6 /* TabBarSelection.png */, @@ -241,16 +289,32 @@ 7F48D57E12D1B88500DE44F6 /* messages@2x.png in Resources */, 7F48D57F12D1B88500DE44F6 /* more.png in Resources */, 7F48D58012D1B88500DE44F6 /* more@2x.png in Resources */, - 7F48D58112D1B88500DE44F6 /* TabBarGlow.png in Resources */, - 7F48D58212D1B88500DE44F6 /* TabBarGlow@2x.png in Resources */, 7F48D58312D1B88500DE44F6 /* TabBarGradient.png in Resources */, 7F48D58412D1B88500DE44F6 /* TabBarGradient@2x.png in Resources */, - 7F48D58512D1B88500DE44F6 /* TabBarItemSelectedBackground.png in Resources */, - 7F48D58612D1B88500DE44F6 /* TabBarItemSelectedBackground@2x.png in Resources */, 7F48D58712D1B88500DE44F6 /* TabBarNipple.png in Resources */, 7F48D58812D1B88500DE44F6 /* TabBarNipple@2x.png in Resources */, 7F48D58912D1B88500DE44F6 /* TabBarSelection.png in Resources */, 7F48D58A12D1B88500DE44F6 /* TabBarSelection@2x.png in Resources */, + FCD4F15B13FE5365003BC1C5 /* TabBarItemSelectedBackground1.png in Resources */, + FCD4F15C13FE5365003BC1C5 /* TabBarItemSelectedBackground1@2x.png in Resources */, + FCD4F15D13FE5365003BC1C5 /* TabBarItemSelectedBackground2.png in Resources */, + FCD4F15E13FE5365003BC1C5 /* TabBarItemSelectedBackground2@2x.png in Resources */, + FCD4F15F13FE5365003BC1C5 /* TabBarItemSelectedBackground3.png in Resources */, + FCD4F16013FE5365003BC1C5 /* TabBarItemSelectedBackground3@2x.png in Resources */, + FCD4F16113FE5365003BC1C5 /* TabBarItemSelectedBackground4.png in Resources */, + FCD4F16213FE5365003BC1C5 /* TabBarItemSelectedBackground4@2x.png in Resources */, + FCD4F16313FE5365003BC1C5 /* TabBarItemSelectedBackground5.png in Resources */, + FCD4F16413FE5365003BC1C5 /* TabBarItemSelectedBackground5@2x.png in Resources */, + FCD4F17413FE8079003BC1C5 /* TabBarGlow1.png in Resources */, + FCD4F17513FE8079003BC1C5 /* TabBarGlow1@2x.png in Resources */, + FCD4F17613FE8079003BC1C5 /* TabBarGlow2.png in Resources */, + FCD4F17713FE8079003BC1C5 /* TabBarGlow2@2x.png in Resources */, + FCD4F17813FE8079003BC1C5 /* TabBarGlow3.png in Resources */, + FCD4F17913FE8079003BC1C5 /* TabBarGlow3@2x.png in Resources */, + FCD4F17A13FE8079003BC1C5 /* TabBarGlow4.png in Resources */, + FCD4F17B13FE8079003BC1C5 /* TabBarGlow4@2x.png in Resources */, + FCD4F17C13FE8079003BC1C5 /* TabBarGlow5.png in Resources */, + FCD4F17D13FE8079003BC1C5 /* TabBarGlow5@2x.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/CustomTabBar/CustomTabBar.xcodeproj/project.xcworkspace/.gitignore b/CustomTabBar/CustomTabBar.xcodeproj/project.xcworkspace/.gitignore new file mode 100644 index 0000000..c21ae06 --- /dev/null +++ b/CustomTabBar/CustomTabBar.xcodeproj/project.xcworkspace/.gitignore @@ -0,0 +1 @@ +/contents.xcworkspacedata diff --git a/CustomTabBar/CustomTabBar.xcodeproj/project.xcworkspace/xcuserdata/ConstantineMureev.xcuserdatad/.gitignore b/CustomTabBar/CustomTabBar.xcodeproj/project.xcworkspace/xcuserdata/ConstantineMureev.xcuserdatad/.gitignore new file mode 100644 index 0000000..198d655 --- /dev/null +++ b/CustomTabBar/CustomTabBar.xcodeproj/project.xcworkspace/xcuserdata/ConstantineMureev.xcuserdatad/.gitignore @@ -0,0 +1 @@ +/UserInterfaceState.xcuserstate diff --git a/CustomTabBar/CustomTabBar.xcodeproj/xcuserdata/ConstantineMureev.xcuserdatad/xcdebugger/.gitignore b/CustomTabBar/CustomTabBar.xcodeproj/xcuserdata/ConstantineMureev.xcuserdatad/xcdebugger/.gitignore new file mode 100644 index 0000000..3d060de --- /dev/null +++ b/CustomTabBar/CustomTabBar.xcodeproj/xcuserdata/ConstantineMureev.xcuserdatad/xcdebugger/.gitignore @@ -0,0 +1 @@ +/Breakpoints.xcbkptlist diff --git a/CustomTabBar/CustomTabBar.xcodeproj/xcuserdata/ConstantineMureev.xcuserdatad/xcschemes/.gitignore b/CustomTabBar/CustomTabBar.xcodeproj/xcuserdata/ConstantineMureev.xcuserdatad/xcschemes/.gitignore new file mode 100644 index 0000000..6cfcc68 --- /dev/null +++ b/CustomTabBar/CustomTabBar.xcodeproj/xcuserdata/ConstantineMureev.xcuserdatad/xcschemes/.gitignore @@ -0,0 +1,2 @@ +/CustomTabBar.xcscheme +/xcschememanagement.plist diff --git a/CustomTabBar/Images/TabBarGlow.png b/CustomTabBar/Images/TabBarGlow1.png similarity index 100% rename from CustomTabBar/Images/TabBarGlow.png rename to CustomTabBar/Images/TabBarGlow1.png diff --git a/CustomTabBar/Images/TabBarGlow@2x.png b/CustomTabBar/Images/TabBarGlow1@2x.png similarity index 100% rename from CustomTabBar/Images/TabBarGlow@2x.png rename to CustomTabBar/Images/TabBarGlow1@2x.png diff --git a/CustomTabBar/Images/TabBarGlow2.png b/CustomTabBar/Images/TabBarGlow2.png new file mode 100644 index 0000000..dfb0f62 Binary files /dev/null and b/CustomTabBar/Images/TabBarGlow2.png differ diff --git a/CustomTabBar/Images/TabBarGlow2@2x.png b/CustomTabBar/Images/TabBarGlow2@2x.png new file mode 100644 index 0000000..b04e78d Binary files /dev/null and b/CustomTabBar/Images/TabBarGlow2@2x.png differ diff --git a/CustomTabBar/Images/TabBarGlow3.png b/CustomTabBar/Images/TabBarGlow3.png new file mode 100644 index 0000000..82a4691 Binary files /dev/null and b/CustomTabBar/Images/TabBarGlow3.png differ diff --git a/CustomTabBar/Images/TabBarGlow3@2x.png b/CustomTabBar/Images/TabBarGlow3@2x.png new file mode 100644 index 0000000..4b8bf16 Binary files /dev/null and b/CustomTabBar/Images/TabBarGlow3@2x.png differ diff --git a/CustomTabBar/Images/TabBarGlow4.png b/CustomTabBar/Images/TabBarGlow4.png new file mode 100644 index 0000000..ea7ecbb Binary files /dev/null and b/CustomTabBar/Images/TabBarGlow4.png differ diff --git a/CustomTabBar/Images/TabBarGlow4@2x.png b/CustomTabBar/Images/TabBarGlow4@2x.png new file mode 100644 index 0000000..5daac57 Binary files /dev/null and b/CustomTabBar/Images/TabBarGlow4@2x.png differ diff --git a/CustomTabBar/Images/TabBarGlow5.png b/CustomTabBar/Images/TabBarGlow5.png new file mode 100644 index 0000000..17ec298 Binary files /dev/null and b/CustomTabBar/Images/TabBarGlow5.png differ diff --git a/CustomTabBar/Images/TabBarGlow5@2x.png b/CustomTabBar/Images/TabBarGlow5@2x.png new file mode 100644 index 0000000..bcec97f Binary files /dev/null and b/CustomTabBar/Images/TabBarGlow5@2x.png differ diff --git a/CustomTabBar/Images/TabBarItemSelectedBackground.png b/CustomTabBar/Images/TabBarItemSelectedBackground1.png similarity index 100% rename from CustomTabBar/Images/TabBarItemSelectedBackground.png rename to CustomTabBar/Images/TabBarItemSelectedBackground1.png diff --git a/CustomTabBar/Images/TabBarItemSelectedBackground@2x.png b/CustomTabBar/Images/TabBarItemSelectedBackground1@2x.png similarity index 100% rename from CustomTabBar/Images/TabBarItemSelectedBackground@2x.png rename to CustomTabBar/Images/TabBarItemSelectedBackground1@2x.png diff --git a/CustomTabBar/Images/TabBarItemSelectedBackground2.png b/CustomTabBar/Images/TabBarItemSelectedBackground2.png new file mode 100644 index 0000000..d035d80 Binary files /dev/null and b/CustomTabBar/Images/TabBarItemSelectedBackground2.png differ diff --git a/CustomTabBar/Images/TabBarItemSelectedBackground2@2x.png b/CustomTabBar/Images/TabBarItemSelectedBackground2@2x.png new file mode 100644 index 0000000..35e01d5 Binary files /dev/null and b/CustomTabBar/Images/TabBarItemSelectedBackground2@2x.png differ diff --git a/CustomTabBar/Images/TabBarItemSelectedBackground3.png b/CustomTabBar/Images/TabBarItemSelectedBackground3.png new file mode 100644 index 0000000..ddeae80 Binary files /dev/null and b/CustomTabBar/Images/TabBarItemSelectedBackground3.png differ diff --git a/CustomTabBar/Images/TabBarItemSelectedBackground3@2x.png b/CustomTabBar/Images/TabBarItemSelectedBackground3@2x.png new file mode 100644 index 0000000..15c11aa Binary files /dev/null and b/CustomTabBar/Images/TabBarItemSelectedBackground3@2x.png differ diff --git a/CustomTabBar/Images/TabBarItemSelectedBackground4.png b/CustomTabBar/Images/TabBarItemSelectedBackground4.png new file mode 100644 index 0000000..309d86c Binary files /dev/null and b/CustomTabBar/Images/TabBarItemSelectedBackground4.png differ diff --git a/CustomTabBar/Images/TabBarItemSelectedBackground4@2x.png b/CustomTabBar/Images/TabBarItemSelectedBackground4@2x.png new file mode 100644 index 0000000..196fec0 Binary files /dev/null and b/CustomTabBar/Images/TabBarItemSelectedBackground4@2x.png differ diff --git a/CustomTabBar/Images/TabBarItemSelectedBackground5.png b/CustomTabBar/Images/TabBarItemSelectedBackground5.png new file mode 100644 index 0000000..1c58ef1 Binary files /dev/null and b/CustomTabBar/Images/TabBarItemSelectedBackground5.png differ diff --git a/CustomTabBar/Images/TabBarItemSelectedBackground5@2x.png b/CustomTabBar/Images/TabBarItemSelectedBackground5@2x.png new file mode 100644 index 0000000..967c4d4 Binary files /dev/null and b/CustomTabBar/Images/TabBarItemSelectedBackground5@2x.png differ diff --git a/CustomTabBar/MainWindow.xib b/CustomTabBar/MainWindow.xib index d352e02..1481c48 100644 --- a/CustomTabBar/MainWindow.xib +++ b/CustomTabBar/MainWindow.xib @@ -2,18 +2,19 @@ 1056 - 10J869 - 851 - 1038.35 - 461.00 + 11B26 + 1617 + 1138 + 566.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 141 + 534 - + YES - - + IBProxyObject + IBUIWindow + IBUICustomObject YES @@ -24,9 +25,7 @@ YES - - YES - + YES @@ -41,20 +40,12 @@ IBCocoaTouchFramework - - CustomTabBarViewController - - - 1 - - IBCocoaTouchFramework - NO - 292 {320, 480} + 3 MCAwAA @@ -77,14 +68,6 @@ 4 - - - viewController - - - - 11 - window @@ -109,26 +92,21 @@ File's Owner - - 3 - - - CustomTabBar App Delegate - -2 - 10 - + 12 + - 12 - + 3 + + CustomTabBar App Delegate @@ -137,11 +115,9 @@ YES -1.CustomClassName + -1.IBPluginDependency -2.CustomClassName - 10.CustomClassName - 10.IBEditorWindowLastContentRect - 10.IBPluginDependency - 12.IBEditorWindowLastContentRect + -2.IBPluginDependency 12.IBPluginDependency 3.CustomClassName 3.IBPluginDependency @@ -149,11 +125,9 @@ YES UIApplication + com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIResponder - CustomTabBarViewController - {{234, 376}, {320, 480}} com.apple.InterfaceBuilder.IBCocoaTouchPlugin - {{525, 346}, {320, 480}} com.apple.InterfaceBuilder.IBCocoaTouchPlugin CustomTabBarAppDelegate com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -162,17 +136,13 @@ YES - - YES - + YES - - YES - + 15 @@ -184,253 +154,19 @@ CustomTabBarAppDelegate NSObject - YES - - YES - viewController - window - - - YES - CustomTabBarViewController - UIWindow - + window + UIWindow - YES - - YES - viewController - window - - - YES - - viewController - CustomTabBarViewController - - - window - UIWindow - + window + + window + UIWindow IBProjectSource - Classes/CustomTabBarAppDelegate.h - - - - CustomTabBarAppDelegate - NSObject - - IBUserSource - - - - - CustomTabBarViewController - UIViewController - - IBProjectSource - Classes/CustomTabBarViewController.h - - - - UIWindow - UIView - - IBUserSource - - - - - - YES - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSError.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSFileManager.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyValueCoding.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyValueObserving.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyedArchiver.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSObject.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSRunLoop.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSThread.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSURL.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSURLConnection.h - - - - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UIAccessibility.h - - - - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UINibLoading.h - - - - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UIResponder.h - - - - UIApplication - UIResponder - - IBFrameworkSource - UIKit.framework/Headers/UIApplication.h - - - - UIResponder - NSObject - - - - UISearchBar - UIView - - IBFrameworkSource - UIKit.framework/Headers/UISearchBar.h - - - - UISearchDisplayController - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UISearchDisplayController.h - - - - UIView - - IBFrameworkSource - UIKit.framework/Headers/UIPrintFormatter.h - - - - UIView - - IBFrameworkSource - UIKit.framework/Headers/UITextField.h - - - - UIView - UIResponder - - IBFrameworkSource - UIKit.framework/Headers/UIView.h - - - - UIViewController - - IBFrameworkSource - UIKit.framework/Headers/UINavigationController.h - - - - UIViewController - - IBFrameworkSource - UIKit.framework/Headers/UIPopoverController.h - - - - UIViewController - - IBFrameworkSource - UIKit.framework/Headers/UISplitViewController.h - - - - UIViewController - - IBFrameworkSource - UIKit.framework/Headers/UITabBarController.h - - - - UIViewController - UIResponder - - IBFrameworkSource - UIKit.framework/Headers/UIViewController.h - - - - UIWindow - UIView - - IBFrameworkSource - UIKit.framework/Headers/UIWindow.h + ./Classes/CustomTabBarAppDelegate.h @@ -446,8 +182,7 @@ YES - CustomTabBar.xcodeproj 3 - 141 + 534