2011-12-14 12 views
6

Na początku chcę powiedzieć, że jestem nowy w iPhone development.I aplikacyjnych chcesz dokonać tabbaritem kiedy będzie wybrać pozycję z im zakładkami to powinno wyglądaćJak mogę zrobić środkowy podniesiony element paska?

enter image description here

Dziękujemy Z góry.

+1

uitabbar nie zapewnia wsparcia dla tego, co próbujesz osiągnąć. Można to zrobić tylko za pomocą zestawu niestandardowych widoków. – Vlad

+0

możesz wysłać mi, w jaki sposób mogę spersonalizować ten widok? – Emon

+0

sprawdź to http://idevrecipes.com/2011/01/04/how-does-the-twitter-iphone-app-implement-a-ustom-tab-bar/ – Vlad

Odpowiedz

0

W tym celu należy utworzyć niestandardowy pasek kart według klasy Sub UITabBarController.

plik TabBarController.h:

@interface TabBarController : UITabBarController<UITabBarControllerDelegate> 
{ 
    UITabBarController *tabController; 

    UIImageView *img1; 
    UIImageView *img2; 
    UIImageView *img3; 
    UIImageView *img4; 
} 

pliku .m

- (void)viewDidLoad 
{  
    [self loadTabView]; 
    //[self viewWillAppear:YES]; 
    [super viewDidLoad];   
} 

- (void) loadTabView 
{ 
    tabController = [[UITabBarController alloc] init]; 
    tabController.delegate = self; 
    tabController.tabBar.backgroundColor = [UIColor clearColor]; 

    //set offset for tabbar items images. 
    int topOffset = 6; 
    int bottomOffset = 6; 
    UIEdgeInsets imageInset = UIEdgeInsetsMake(topOffset, 0, -bottomOffset, 0); 

    [self.view addSubview:tabController.view]; 
} 

// reset the background image in custom tabbar. 
- (void) setTabBarBackground { 

    UIImageView *img = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"btnbg.png"]]; 
    img.frame = CGRectOffset(img.frame, 0, 1); 
    img.frame = CGRectMake(img.frame.origin.x, img.frame.origin.y-1, img.frame.size.width, img.frame.size.height); 
    [tabController.tabBar insertSubview:img atIndex:0]; 
    [img release]; 

} 

// reset the background image in custom tabbar. 
- (void) resetTabBar : (NSString *) tabid 
{ 
    [img1 removeFromSuperview]; 

    NSLog(@"tab id - %@",tabid); 
    switch ([tabid intValue]) { 
     case 0: 
      img1 = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"tab-1.jpg"]]; 
      break; 
     case 1: 
      img1 = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"tab-2.jpg"]]; 
      break; 
     case 2: 
      img1 = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"tab-3.jpg"]]; 
      break; 
     case 3: 
      img1 = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"tab-4.jpg"]]; 
      break; 
     case 4: 
      img1 = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"tab-5.jpg"]]; 
      break; 
     default: 
      break; 
    } 

    img1.frame = CGRectOffset(img1.frame, 0, 1); 
    [tabController.tabBar insertSubview:img1 atIndex:0]; 
    [tabController.tabBar bringSubviewToFront:img1]; 
    [img1 release]; 

} 

// here push View controllers 
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController { 
} 

Nadzieję daje pomysł ..

+0

Rozwiązałem ten problem inaczej. Cokolwiek dziękuję za pomoc – Emon

+0

@Emon Jak to rozwiązałeś, czy możesz udostępniać pliki? –

1

zostało pokryte sporo tutoriali. Jak większość z tych aplikacji osiąga ten efekt, umieszcza niestandardowy UIButton, który podąża za podobną stylizacją do paska kart na górze paska zakładek w środku.

iDev Recipes ma doskonały poradnik z przykładowym kodzie

0

nie radziłbym tego robić. Użytkownicy systemu iOS są przyzwyczajeni do znanej funkcji paska kart. Najważniejsze jest wystarczające, aby dać im znać, na której karcie są.

Twój pomysł na projekt jest bardzo atrakcyjny, ale wiąże się z kosztem. Obszar nad paskiem obok upragnionego elementu jest zmarnowany lub rozmiar innych ikon musi zostać zmniejszony. To sprawi, że będzie trudniejsze w użyciu, a nie łatwiejsze.

Oto dobra wskazówka: odejście 2 godziny z intensywnego życia i przeczytaj Apple Human Interface Guidelines dla systemu iOS od deski do deski. To fascynująca lektura i daje dobre wskazówki do projektowania takich pytań.

+0

To jest dawanie i branie.Wierzę, że większość użytkowników aplikacji będzie pod wrażeniem lepszego i wyjątkowego projektu, a nie bardziej praktycznego podejścia do projektowania. –

+0

Tak, jest to również możliwe. Ponadto, nawyki użytkowników nieustannie się zmieniają, a Apple może jedynie tak bardzo kontrolować. – Mundi

+0

To nie dodaje żadnej wartości do pytania. Jeśli wymaga tego klient, będziemy go rozwijać. – Tony

3

wiem, że to już odpowiedzi, ale chciał zaoferować alternatywne podejście .

Podklasowanie UITabBarController to zły pomysł, zgodnie z dokumentami. Nie miałem również żadnych problemów, gdy faktycznie próbowałem użyć UIImagePickerController jako jednego z kontrolerów widoku znajdujących się za podklasą tabbar.

Podjęłam znacznie prostsze podejście, nakładając uibutton na element tabbar. Przykład projektu można znaleźć tutaj:

https://github.com/group6/RaisedCenterButton

To tylko przykład, choć. Nadal będziesz musiał wykonać pracę, aby włączyć ją do aplikacji.

Powiązane problemy