Search code examples
iosuitabbartintcolor

Change UITabBar tint colors in the More menu


I'm trying to change the blue colour from icons in the more menu. I tried almost everything I found on Stack Overflow, but nothing worked. I tried this solution, but is not working.

The only option I found to change the colour was

[[UIView appearance] setTintColor:[UIColor redColor]];

but it changes all colours in the app.

tint color not changed tint colour changed using UIView appearance tint color

The code is just a new project with storyboard, so I just added the views on the storyboard.
Thanks for helping.

Edit: After I added the code:

    UIImage *myImage = [[UIImage imageNamed:@"music.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
self.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"New Title" image:myImage selectedImage:[UIImage imageNamed:@"music.png"]];

The image is changed when the view is selected, but it's still blue.


Solution

  • To do what you need, you should use images by creating UITabBarItem for each controller and add an image and a selected image.

    See Apple Documentation about UITabBarItem

    Otherwise looks here, from @Aaron Brager :

    Edit after seing the full code First there is many mistakes in your project, assets should be in xcassets folder, in view didload write your code after the 'super viewDidLoad]', etc.

    About your problem, in your viewDidLoad method in the FirstViewController

    - (void)viewDidLoad {
        [super viewDidLoad];
        // Do any additional setup after loading the view, typically from a nib.
        // Your code start here, not before the super
        [[UITabBar appearance] setTintColor:[UIColor redColor]];
    
        // Get table view of more new viewController
        UITableView *view =(UITableView*)self.tabBarController.moreNavigationController.topViewController.view;
    
        view.tintColor = [UIColor redColor]; // Change the image color
    
        if ([[view subviews] count]) {
            for (UITableViewCell *cell in [view visibleCells]) {
                cell.textLabel.textColor = [UIColor redColor]; // Change the text color
    
            }
        }
    }