zoukankan      html  css  js  c++  java
  • 动画隐藏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

    核心的地方:

  • 相关阅读:
    探索Java8:(二)Function接口的使用
    Vue 动态图片加载路径问题和解决方法
    小工具:使用Python自动生成MD风格链接
    解决Navicat Premium 12 连接oracle数据库出现ORA-28547的问题
    Beetl模板引擎入门教程
    JSON.stringify()的深度使用
    nvm 查看node版本
    去掉点击a标签时产生的虚线框
    html 设置input框的记忆功能(联想内容)
    php post和get请求
  • 原文地址:https://www.cnblogs.com/YouXianMing/p/3829085.html
Copyright © 2011-2022 走看看