首页 > 代码库 > 动画隐藏UITabBarController与UINavigationController

动画隐藏UITabBarController与UINavigationController

动画隐藏UITabBarController与UINavigationController

效果图:

源码:

AppDelegate.m

////  AppDelegate.m//  HideTabbar////  Copyright (c) 2014年 Y.X. All rights reserved.//#import "AppDelegate.h"#import "RootViewController.h"@implementation AppDelegate- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];    // Override point for customization after application launch.    UITabBarController *tab        = [[UITabBarController alloc] init];    tab.viewControllers            = @[[RootViewController new]];    UITabBar     *tabBar           = tab.tabBar;    UITabBarItem *tabBarItem       = [tabBar.items objectAtIndex:0];    tabBarItem.title               = @"YouXianMing";    NSDictionary *textDic          =         @{NSFontAttributeName: [UIFont fontWithName:@"HelveticaNeue-Thin"                                               size:20.f]};    [tabBarItem setTitlePositionAdjustment:UIOffsetMake(0, -12.f)];    [tabBarItem setTitleTextAttributes:textDic                              forState:UIControlStateNormal];        UINavigationController *NC     =         [[UINavigationController alloc] initWithRootViewController:tab];    self.window.rootViewController = NC;    self.window.backgroundColor    = [UIColor whiteColor];    [self.window makeKeyAndVisible];    return YES;}@end

RootViewController.m

////  RootViewController.m//  HideTabbar////  Copyright (c) 2014年 Y.X. All rights reserved.//#import "RootViewController.h"@interface RootViewController ()@property (nonatomic, assign) BOOL      flag;@end@implementation RootViewController- (void)viewDidLoad{    [super viewDidLoad];    self.view.layer.contents    = (__bridge id)([UIImage imageNamed:@"back"].CGImage);    // 添加手势    UITapGestureRecognizer *tap =         [[UITapGestureRecognizer alloc] initWithTarget:self                                                action:@selector(event:)];    [self.view addGestureRecognizer:tap];}- (void)event:(UITapGestureRecognizer *)tap{    if (!_flag)    {        [self hideTabBar:self.tabBarController];    }    else    {        [self showTabBar:self.tabBarController];    }        _flag = !_flag;}- (void)hideTabBar:(UITabBarController *)tabbarcontroller{    // 隐藏导航栏    [self.navigationController setNavigationBarHidden:YES animated:YES];        // 隐藏tabbar    [UIView animateWithDuration:UINavigationControllerHideShowBarDuration animations:^{        for(UIView *view in tabbarcontroller.view.subviews)        {            if([view isKindOfClass:[UITabBar class]])            {                [view setFrame:CGRectMake(view.frame.origin.x,                                          view.frame.origin.y + 50,                                          view.frame.size.width,                                          view.frame.size.height)];            }            else            {                [view setFrame:CGRectMake(view.frame.origin.x,                                          view.frame.origin.y,                                          view.frame.size.width,                                          view.frame.size.height + 50)];            }        }    }];}- (void)showTabBar:(UITabBarController *)tabbarcontroller{        // 显示导航栏    [self.navigationController setNavigationBarHidden:NO animated:YES];        // 显示tabbar    [UIView animateWithDuration:UINavigationControllerHideShowBarDuration animations:^{        for(UIView *view in tabbarcontroller.view.subviews)        {            if([view isKindOfClass:[UITabBar class]])            {                [view setFrame:CGRectMake(view.frame.origin.x,                                          view.frame.origin.y - 50,                                          view.frame.size.width,                                          view.frame.size.height)];            }            else            {                [view setFrame:CGRectMake(view.frame.origin.x,                                          view.frame.origin.y,                                          view.frame.size.width,                                          view.frame.size.height - 50)];            }        }    }];}@end

核心的地方: