Reputation: 339
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.
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.
Upvotes: 4
Views: 4930
Reputation: 2477
to change color of this button
moreNavigationController.navigationBar.tintColor = .white
Upvotes: 0
Reputation: 58049
This is the Swift version of Ludovic's answer.
Keep in mind that this version only changes the tint color, since the original answer did the text color change in a very hacky way. For changing it properly, you'd have to override moreNavigationController
and its cellForRowAt
function.
tabBarController?.tabBar.tintColor = .red
if let moreTableView = tabBarController?.moreNavigationController.topViewController?.view as? UITableView {
moreTableView.tintColor = .red
}
Upvotes: 2
Reputation: 2002
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
}
}
}
Upvotes: 7