Изменение цвета оттенка UITabBar в меню More
Я пытаюсь изменить синий цвет значков в меню more. Я перепробовал почти все, что нашел в Stack Overflow, но ничего не сработало. Я попробовал это Решение, но оно не работает.
Единственный вариант, который я нашел, чтобы изменить цвет, был
[[UIView appearance] setTintColor:[UIColor redColor]];
Но он меняет все цвета в приложении.
Код-это просто новый проект с раскадровкой, поэтому я просто добавил представления на раскадровке.Спасибо за помощь.
Edit: после того, как я добавил код:
UIImage *myImage = [[UIImage imageNamed:@"music.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
self.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"New Title" image:myImage selectedImage:[UIImage imageNamed:@"music.png"]];
Изображение изменяется при выборе вида, но оно по-прежнему остается синим.
2 ответа:
Чтобы сделать то, что вам нужно, вы должны использовать образы, создав UITabBarItem для каждого контроллера и добавив изображение и выбранный образ.
Смотрите документацию Apple об UITabBarItem
Иначе выглядит здесь, от @Aaron Brager:
- Как установить невыбранный оттенок UITabBarItem, * * * включая системные элементы** * (iOS7)
- UITabBarController unselected icon image tint
Редактировать после просмотра полного кода Первый в вашем проекте много ошибок, активы должны быть в папке xcassets, в view didload напишите свой код после ' super viewDidLoad]' и т. д.
О вашей проблеме, в вашем методе viewDidLoad в 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 } } }
Это быстрая версия ответа Людовика.
Имейте в виду, что эта версия изменяет только цвет оттенка, так как оригинальный ответ изменил цвет текста очень избитым способом. Чтобы изменить его должным образом, вам придется переопределить
moreNavigationController
и его функциюcellForRowAt
.tabBarController?.tabBar.tintColor = .red if let moreTableView = tabBarController?.moreNavigationController.topViewController?.view as? UITableView { moreTableView.tintColor = .red }