Чтобы изменить цвет невыбранного значка UITabBar в iOS 7?
Я знаю, что этот вопрос был задан и раньше, но, тем не менее, я не нашел решения в Интернете.
Я сослался на следующие сообщения:
Как изменить цвет текста и значков для tabBarItems в iOS 7?
Только изменить цвет выбранных значков с помощью tintColor
.
Как изменить цвет элементов невыделенной вкладки в iOS 7? В этом они написали свой собственный класс GozTabBar
, унаследованный от UIView
Я хочу изменить серый цвет по умолчанию значка UITabBar
, когда он находится в невыбранном состоянии.
Любая помощь будет высоко оценена. Спасибо заранее.
Ответы
Ответ 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]