Overlay tabbar with a view

前端 未结 3 669
情书的邮戳
情书的邮戳 2021-01-24 00:21

I have a UIViewController inside Tab bar. For one VC in Tab bar I allow the interface to rotate upon device rotation. The challenge is, that I want to hide the Tab

相关标签:
3条回答
  • 2021-01-24 00:40

    This worked for me

    - (void)viewDidLoad {
        [super viewDidLoad];    
        previousRect = self.view.frame;     
    }
    
    - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
        return YES;
    }
    
    - (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration;
    {
        if(toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft || toInterfaceOrientation == UIInterfaceOrientationLandscapeRight) {               
            [self.navigationController setNavigationBarHidden:TRUE animated:FALSE]; 
            [[UIApplication sharedApplication] setStatusBarHidden:TRUE animated:FALSE];
        }
        else
        {
            [self.navigationController setNavigationBarHidden:FALSE animated:FALSE];
            [[UIApplication sharedApplication] setStatusBarHidden:FALSE animated:FALSE];
        }
    }
    
    -(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation { 
        UIInterfaceOrientation toOrientation = self.interfaceOrientation;
    
        if ( self.tabBarController.view.subviews.count >= 2 )
        {
            UIView *transView = [self.tabBarController.view.subviews objectAtIndex:0];
            UIView *tabBar = [self.tabBarController.view.subviews objectAtIndex:1];
    
            if(toOrientation == UIInterfaceOrientationLandscapeLeft || toOrientation == UIInterfaceOrientationLandscapeRight) {                                     
                    transView.frame = CGRectMake(0, 0, 480, 320 );
                    tabBar.hidden = TRUE;
            }
            else
            {                               
                    transView.frame = previousRect;         
                    tabBar.hidden = FALSE;
            }
        }
    }
    
    0 讨论(0)
  • 2021-01-24 00:48
    [self hideTabBar:self.tabBarController];
    
    
    - (void) hideTabBar:(UITabBarController *) tabbarcontroller {
    
        [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, 480, view.frame.size.width, view.frame.size.height)];
            } 
            else 
            {
                [view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y, view.frame.size.width, 480)];
            }
    
        }
        [UIView commitAnimations];    
    }
    
    0 讨论(0)
  • 2021-01-24 00:59

    If you want to always hide the tab bar when a particular UIViewController is pushed, you can do:

    self.hidesBottomBarWhenPushed = YES;
    
    0 讨论(0)
提交回复
热议问题