码迷,mamicode.com
首页 > 其他好文 > 详细

动画隐藏UITabBarController与UINavigationController

时间:2014-07-08 23:32:29      阅读:205      评论:0      收藏:0      [点我收藏+]

标签:des   style   blog   http   color   width   

动画隐藏UITabBarController与UINavigationController

bubuko.com,布布扣

效果图:

bubuko.com,布布扣

源码:

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

核心的地方:

bubuko.com,布布扣

 

 

 

动画隐藏UITabBarController与UINavigationController,布布扣,bubuko.com

动画隐藏UITabBarController与UINavigationController

标签:des   style   blog   http   color   width   

原文地址:http://www.cnblogs.com/YouXianMing/p/3829085.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!