博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

由于手机界面比较小,有时候由于业务的需要,需要隐藏那个导航用的tabbar,方法有下面几个方法

 

方法一 

    YourAppDelegate *app = (YourAppDelegate *)[UIApplication sharedApplication].delegate;
   
    NSArray 
*views = [app.tabBarController.view subviews];
    
for(id v in views){
        
if([v isKindOfClass:[UITabBar class]]){
            [(UITabBar 
*)v setHidden:YES];
        }

至于是隐藏还是显示根据自己的业务需求,在ViewController的不同的生命周期里执行,

推荐在下面2个方法里隐藏和显示 

- (void)viewWillAppear: (BOOL)animated 

- (void)viewWillDisappear: (BOOL)animated  

 

方法二

   [viewController setHidesBottomBarWhenPushed:YES];

这个方法在viewcontroller push navigation之前执行,也还比较方便

 

方法三

     - (void) hideTabBar:(BOOL) hidden

    {  
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:
0];
    
    
for(UIView *view in self.tabBarController.view.subviews)
    {
        
if([view isKindOfClass:[UITabBar class]])
        {
            
if (hidden) {
                [view setFrame:CGRectMake(view.frame.origin.x, 
320, view.frame.size.width, view.frame.size.height)];
            } 
else {
                [view setFrame:CGRectMake(view.frame.origin.x, 
320-49, view.frame.size.width, view.frame.size.height)];
            }
        } 
        
else 
        {
            
if (hidden) {
                [view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y, view.frame.size.width, 
320)];
            } 
else {
                [view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y, view.frame.size.width, 
320-49)];
            }
        }
    }
    [UIView commitAnimations];
}

 

 这个方法,没有试过,如果把frame的位置调整好,应该是可以解决的但是在解决横屏和竖屏的时候,可能要花点功夫。

 

 

 

 

posted on 2011-08-12 10:26  Likwo  阅读(6606)  评论(0编辑  收藏  举报