您的位置:首页 > 产品设计 > UI/UE

iOS之UITabBarController与UINavigationController的动画隐藏

2015-01-22 15:54 501 查看
转载自:http://www.cnblogs.com/YouXianMing/p/3829085.html

效果图:



源码:

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


核心的地方:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息