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

UITabBar оттенок в iOS 7

Как я могу указать оттенок изображений, когда вкладка выбрана и не выбрана?

Я пробовал это, но он не работает:

[[UITabBar appearance] setTintColor:[UIColor redColor]];
[[UITabBar appearance] setSelectedImageTintColor:[UIColor greenColor]];

При этом выбранный оттенок будет красным (не зеленым) и невыбранным оттенком серого (не красным).

4b9b3361

Ответ 1

Вы можете установить цвет оттенков для выбранных и невыделенных кнопок панели табуляции, например:

[[UIView appearanceWhenContainedIn:[UITabBar class], nil] setTintColor:[UIColor redColor]];
[[UITabBar appearance] setSelectedImageTintColor:[UIColor greenColor]];

Первая строка устанавливает невыбранный цвет - красный в этом примере - путем установки tintColor UIView, когда он содержится в панели вкладок. Обратите внимание, что это только устанавливает цвет оттенка невыделенного изображения - он не меняет цвет текста под ним.

Вторая строка устанавливает цвет выделенного оттенка выбранного оттенка на зеленый.

Ответ 2

Используете ли вы шаблонную версию своих изображений?

Вместо настройки изображений с помощью [UIImage imageNamed: @"MyImage"] установите их с помощью [[UIImage imageNamed: @"MyImage"] imageWithRenderingMode: UIImageRenderingModeAlwaysTemplate].

Эта настройка вместе с вашим кодом должна решить эту проблему.

Ответ 3

Вы должны использовать новые режимы рендеринга изображений, представленные в iOS 7 (UIImageRenderingModeAlwaysOriginal и UIImageRenderingModeAlwaysTemplate), см. мой ответ на аналогичный question:

Надеюсь, что это поможет

Ответ 4

если у вас нет большого количества контроллеров view. Вот мой способ это сделать.

В методе делегата просто разместите свою вкладку bg Image. И установите UIImageView

Создайте UITabbar intance в AppDelegate.h

@property (nonatomic,retain) UITabBar *tabbar;

И

@synthesize tabbar;

UITabBarController *tabBarController =
    (UITabBarController *)self.window.rootViewController;
tabbar = [tabBarController tabBar];

[tabbar setBackgroundImage:[UIImage imageNamed:@"tabbarBg.png"]];
 NSArray *tabImageArray  = [NSArray arrayWithObjects:
                                [UIImage imageNamed:@"tab1Hover.png"],
                                [UIImage imageNamed:@"tab2.png"],
                                [UIImage imageNamed:@"tab3.png"],
                                [UIImage imageNamed:@"tab4.png"],
                                [UIImage imageNamed:@"tab5.png"],
                               nil];

    for (int i = 0; i<5; i++) {
        UIImageView *image = [[UIImageView alloc]initWithFrame:CGRectMake(20+i*60+i*3.5, 10, 25, 21)];
        [image setContentMode:UIViewContentModeScaleAspectFit];
        [image setImage:[tabImageArray objectAtIndex:i]];
        [image setTag:10+i];
        [tabbar addSubview:image];
    } 

Затем каждый ViewController на вкладке добавляет

-(void)viewWillAppear:(BOOL)animated 

делегировать метод и в этом методе. Вы можете изменить изображения, как показано ниже.

-(void)viewWillAppear:(BOOL)animated{
AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
UITabBarController *tabBarController = (UITabBarController *)appDelegate.window.rootViewController;
 NSArray *tabImageArray  = [NSArray arrayWithObjects:
                               [UIImage imageNamed:@"tab1Hover.png"],
                               [UIImage imageNamed:@"tab2.png"],
                               [UIImage imageNamed:@"tab3.png"],
                               [UIImage imageNamed:@"tab4.png"],
                               [UIImage imageNamed:@"tab5.png"],
                               nil];
for (int i = 0; i<5; i++) {
        UIImageView *image = (UIImageView*)[tabbar viewWithTag:10+i];
        [image setImage:[tabImageArray objectAtIndex:i]];
    }
}

Итак, просто обходите tabImageArray в каждом контроллере View. Тогда вы можете использовать его.

Я тоже работаю на iOS 7.