Search code examples
objective-cxcodeios5

Set active image for UITabBar


I have defined a UITabBar programmatically but how can I set a custom UITabBar icon when the item is active?

Here is my code for declaring the UITabBar button, but how can I set a custom image when it's active?

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];

    if (self) {
        self.title = NSLocalizedString(@"Free", @"Free");
        self.tabBarItem.image = [UIImage imageNamed:@"Free.png"];
    }

    return self;
}

Solution

  • You need to set the normal and selected states for each tab bar item:

    UIImage *normalImg = [UIImage imageNamed:@"Free.png"];
    UIImage *selectedImg = [UIImage imageNamed:@"Free_Selected.png"];
    
    [self.tabBarItem setBackgroundImage:normalImg forState:UIControlStateNormal]; //Normal
    [self.tabBarItem setBackgroundImage:selectedImg forState:UIControlStateSelected]; //Selected