Изменение цвета оттенка UITabBar в меню More


Я пытаюсь изменить синий цвет значков в меню more. Я перепробовал почти все, что нашел в Stack Overflow, но ничего не сработало. Я попробовал это Решение, но оно не работает.

Единственный вариант, который я нашел, чтобы изменить цвет, был

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

Но он меняет все цвета в приложении.

оттенок цвета не изменилсяоттенок цвет изменен с помощью UIView внешний вид оттенок цвет

Код-это просто новый проект с раскадровкой, поэтому я просто добавил представления на раскадровке.
Спасибо за помощь.

Edit: после того, как я добавил код:

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

Изображение изменяется при выборе вида, но оно по-прежнему остается синим.

2 3

2 ответа:

Чтобы сделать то, что вам нужно, вы должны использовать образы, создав UITabBarItem для каждого контроллера и добавив изображение и выбранный образ.

Смотрите документацию Apple об UITabBarItem

Иначе выглядит здесь, от @Aaron Brager:

Редактировать после просмотра полного кода Первый в вашем проекте много ошибок, активы должны быть в папке 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
}