Как убрать глянцевую подсветку на выбранном UITabBarItem в iOS? - PullRequest
13 голосов
/ 21 августа 2011

По умолчанию в панели UITabbar на выбранном UITabBarItem есть глянцевая подсветка.

Можно ли снять глянцевую маску подсветки?

Спасибо.

Ответы [ 4 ]

60 голосов
/ 28 октября 2012
[[UITabBar appearance] setSelectionIndicatorImage:[[UIImage alloc] init]];

Работает как шарм!

6 голосов
/ 04 ноября 2011
[[UITabBar appearance] setSelectionIndicatorImage:[UIImage {anImage}]]

это влияет на каждую используемую вами вкладку (даже на подклассы)

Если вы используете изображение, имеющее тот же цвет, что и фон панели вкладок, вы не увидите индикатор.

Возможно, вы даже можете использовать полностью прозрачное изображение или изображение размером 1px * 1px.

5 голосов
/ 26 ноября 2011

В случае, если вы настраиваете элементы панели вкладок с помощью пользовательских изображений, вы можете сделать это. Я сделал настройку элементов панели вкладок, добавив фоновое изображение на панель вкладок со всеми нарисованными вкладками, одна вкладка в выбранном состоянии и другие в невыбранном состоянии. В каждом didSelectViewController я меняю фоновое изображение. Затем я вывожу фоновое изображение на передний план и добавляю собственные метки с нужным заголовком.

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

Код выглядит примерно так:

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
    [self customizeTabBar];
}

- (void)customizeTabBar {

    NSString *imageName = [NSString stringWithFormat:@"tabbg%i.png", tabBarCtrl.selectedIndex + 1];

    for(UIView *view in tabBarCtrl.tabBar.subviews) {  
        if([view isKindOfClass:[UIImageView class]]) {  
            [view removeFromSuperview];  
        }  
    }  
    UIImageView *background = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:imageName]] autorelease];
    [tabBarCtrl.tabBar insertSubview:background atIndex:0]; 
    [tabBarCtrl.tabBar bringSubviewToFront:background];
        //if needed, here must be adding UILabels with titles, I didn't need it.

}  

Может быть, вам будет интересно:)

1 голос
/ 05 июля 2013

Согласно документации Apple вы можете реализовать:

(void)setFinishedSelectedImage:
      (UIImage *)selectedImage withFinishedUnselectedImage:
      (UIImage *)unselectedImage

Какой метод UITabBar

Вот ссылка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...