2012-05-21 25 views
5

Został utworzony prosty niestandardowy umieszczenie zakładek poprzez ustawienie obrazów z każdej pozycji, jak następuje:Ustawianie wysokości UITabBar

UITabBar *tabBar = self.tabBarController.tabBar; 
UITabBarItem *item0 = [tabBar.items objectAtIndex:0]; 
UITabBarItem *item1 = [tabBar.items objectAtIndex:1]; 
UITabBarItem *item2 = [tabBar.items objectAtIndex:2]; 

[item0 setFinishedSelectedImage:[UIImage imageNamed:@"activity_active.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"activity.png"]]; 
[item1 setFinishedSelectedImage:[UIImage imageNamed:@"agenda_active.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"agenda.png"]]; 
[item2 setFinishedSelectedImage:[UIImage imageNamed:@"settings_active.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"settings.png"]]; 

Choć to działa świetnie, zauważyłem, że jest czarny puste miejsce pod moim umieszczenie zakładek

enter image description here

Moje obrazy są 44px wysokości, ale myślę, że trzeba jakoś zmienić wysokość mojego im zakładkami.

Odpowiedz

0

Wykorzystanie -

tabBar.frame=CGRectMake(x,y,w,h); 

W ten sposób można ustawić xCord, yCord, szerokość i wysokość.

+0

Dzięki, ale dziwnie kiedy ustawić y do self.window.frame.size.height, to wciąż widoczne przez kilka pikseli. Tak samo, gdy użyć [im zakładkami setFrame: CGRectMake (0.0f, self.window.frame.size.height - 44 self.window.frame.size.width, 44.0f)] ;, można jeszcze zobaczyć podświetlona wybrana zakładka w czarnej ramce poniżej: –

+0

musisz zapisać te wartości y i sprawdzić, czy otrzymujesz te wartości poprawnie? – rishi

+0

self.window.frame.size.height: 480, taBar.frame.origin.y: 436, tabBar.frame.size.heigh: 44. Kiedy robię zrzut ekranu i sprawdzam w photoshopie, tabbar jest tylko 428px na osi Y. –

2

Sam tabBar ma rozmiar 49 pikseli i jest renderowany w kolorze czarnym za Twoimi obrazami (być może w [UITabBar layoutSubviews]). Wtedy twoje obrazy są renderowane na wierzchu. Przyczyną przesunięcia jest to, że dostarczone obrazy są zbyt duże, UITabBar oczekuje ikon 30x30px, a nie obrazu całego UITabBarItem.

Oto kilka rzeczy, aby spróbować:

  1. dostarczyć tylko ikonę 30x30px, zamiast całego przycisk tabulatora
  2. Po ustawieniu obrazów na pozycję tabulatora, spróbuj tego: [item setImageInsets:UIEdgeInsetsMake(6, 0, -6, 0)]; // play with insets until it renders correctly
  3. Podklas UITabBar i przesuń layoutSubviews, aby najpierw zadzwonić pod numer super, a następnie zmień położenie obrazu w dowolny sposób. Niezalecane, może się zepsuć w przyszłych wersjach iOS.
+0

Niesamowita opcja 2 zrobiła dla mnie tę sztuczkę. Dziękuję :) – SuperKevin

0

Sprawdź to:

[self.tabBar setFrame:CGRectMake(self.tabBar.frame.origin.x, self.tabBar.frame.origin.y - 30, self.tabBar.frame.size.width, self.tabBar.frame.size.height + 30)]; 
+1

To działa, dopóki nie wybierzesz elementu z paska kart, a następnie zostanie zresetowany. Jak rozwiązać ten problem? –

Powiązane problemy