2013-09-02 5 views
-2

У меня есть этот UITabBar, созданный с помощью этого кода в AppDelegate.m:Скрыть панель вкладок на iPhone

UITabBarController *tbc = [[UITabBarController alloc] init]; 

BarsViewController *bvc = [[BarsViewController alloc] init]; 
StopwatchViewController *svc = [[StopwatchViewController alloc] init]; 
TimerViewController *tvc = [[TimerViewController alloc] init]; 

[bvc.tabBarItem setTitle:@"Clock"]; 
[svc.tabBarItem setTitle:@"Stopwatch"]; 
[tvc.tabBarItem setTitle:@"Timer"]; 

[tbc setViewControllers:[NSArray arrayWithObjects:svc, bvc, tvc, nil] animated:YES]; 

[tbc setSelectedIndex:1]; 

Я хочу иметь панель вкладок скрыты полностью, а не толкать вверх любой из слоев на экране , Есть какой-либо способ сделать это?

+0

так просто только используйте имя пользователя tabbarcontroller .tabbar.hidden = true ;. –

+0

то зачем ты его создал? – iAppDeveloper

ответ

2

В своем первом ViewController добавить

-(void)viewWillAppear:(BOOL)animated{ 
    self.tabBarController.tabBar.hidden = YES; 
} 
1

если вы хотите показать и скрыть свой TabBar несколько раз из разных контроллеров отображения затем реализовать ниже код в файле appDelegate.m

- (void) hideTabBar:(UITabBarController *) tabbarcontroller 
{ 
int height = 480; 
if (([UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationLandscapeRight) 
    || ([UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationLandscapeLeft)) 
{ 
    height = 320; 
} 
[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:0.3]; 
for(UIView *view in tabbarcontroller.view.subviews) 
{ 
    if([view isKindOfClass:[UITabBar class]]) 
    { 
     [view setFrame:CGRectMake(view.frame.origin.x, height, view.frame.size.width, view.frame.size.height)]; 
    } 
    else { 
     [view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y, view.frame.size.width, height)]; 
    } 
} 
[UIView commitAnimations]; 
} 

-(void) showTabBar:(UITabBarController *) tabbarcontroller 
{ 
int height = 431; 
if (([UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationLandscapeRight) 
    || ([UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationLandscapeLeft)) 
{ 
    height = 271; 
} 
[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:0.5]; 
for(UIView *view in tabbarcontroller.view.subviews) 
{ 
    if([view isKindOfClass:[UITabBar class]]) 
    { 
     [view setFrame:CGRectMake(view.frame.origin.x, height, view.frame.size.width, view.frame.size.height)]; 
    } 
    else { 
     [view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y, view.frame.size.width, height)]; 
    } 
} 
[UIView commitAnimations]; 
} 
+0

Это не сработало; Панель вкладок не исчезла, и все было сдвинуто вверх, оставив черную полосу внизу. – user2397282

+0

назовите это при желаемом видеController [appDelegate hideTabBar: appDelegate. TBC]; и он отлично работает, я только что проверил, и он отлично работал, если вы запустили этот код в iphone 5, а затем установите кадр соответственно, вместо 480 используйте 568 ok. –

Смежные вопросы