Подтвердить что ты не робот

Чтобы изменить цвет невыбранного значка UITabBar в iOS 7?

Я знаю, что этот вопрос был задан и раньше, но, тем не менее, я не нашел решения в Интернете.

Я сослался на следующие сообщения:

Как изменить цвет текста и значков для tabBarItems в iOS 7? Только изменить цвет выбранных значков с помощью tintColor.

Как изменить цвет элементов невыделенной вкладки в iOS 7? В этом они написали свой собственный класс GozTabBar, унаследованный от UIView

Я хочу изменить серый цвет по умолчанию значка UITabBar, когда он находится в невыбранном состоянии.

Любая помощь будет высоко оценена. Спасибо заранее.

4b9b3361

Ответ 1

Я предполагаю, что вы не хотите менять цвет с помощью tintColor? Другой вариант - использовать два изображения, которые выглядят одинаково, но отличаются по цвету. Одним из изображений является выбранная вкладка, другая - не выбрана.

В вашей функции AppDelegate.m - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions попробуйте это.

UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController;
UITabBar *tabBar = tabBarController.tabBar;

// repeat for every tab, but increment the index each time
UITabBarItem *firstTab = [tabBar.items objectAtIndex:0];

// also repeat for every tab
firstTab.image = [[UIImage imageNamed:@"someImage.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ];
firstTab.selectedImage = [[UIImage imageNamed:@"someImageSelected.png"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

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

UITabBarController *tabBarController = self.tabBarController;

Ответ 2

Если вы уже настроили изображения на вкладке с помощью Storyboard, просто вызовите этот метод в ViewDidLoad вашего первого представления:

-(void) configTabBar
{     
    UITabBarController *tabBarController = [self tabBarController];
    UITabBar *tabBar = tabBarController.tabBar;

    for (UITabBarItem  *tab in tabBar.items) {
        tab.image = [tab.image imageWithRenderingMode: UIImageRenderingModeAlwaysOriginal];
        tab.selectedImage = [tab.image imageWithRenderingMode: UIImageRenderingModeAlwaysOriginal];
    }
}

Ответ 3

[[UITabBar appearance] setTintColor:[UIColor colorWithRed:252/255.0 green:218/255.0 blue:49/255.0 alpha:1.0]];

tabBarItem1.image = [[UIImage imageNamed:@"home_icon.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    tabBarItem1.selectedImage = [UIImage imageNamed:@"home_icon_selected.png"];

[[UITabBar appearance] setBackgroundColor:[UIColor colorWithRed:15/255.0 green:85/255.0 blue:160/255.0 alpha:1.0]];
    // Change the title color of tab bar items
    [[UITabBarItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
                                                       [UIColor whiteColor], NSForegroundColorAttributeName,
                                                       nil] forState:UIControlStateNormal];
    UIColor *titleHighlightedColor = [UIColor colorWithRed:252/255.0 green:218/255.0 blue:49/255.0 alpha:1.0];
    [[UITabBarItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
                                                       titleHighlightedColor, NSForegroundColorAttributeName,
                                                       nil] forState:UIControlStateHighlighted]

Ответ 4

изменить UIControlStateHighlighted на UIControlStateSelected для iOS8

 [[UITabBarItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
                                                           [UIColor whiteColor], NSForegroundColorAttributeName,
                                                           nil] forState:UIControlStateNormal];
    [[UITabBarItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
                                                           titleHighlightedColor, NSForegroundColorAttributeName,
                                                           nil] forState:UIControlStateSelected]