和Tabbar按钮切换动画一样(上一篇)
首先继承UITabBarController创建自己的Controller,
声明方法
+(void)hideTabBarController:(UITabBarController *)tabbarcontroller;
+(void)showTabBarController:(UITabBarController *)tabbarcontroller;
在.m中实现
+ (void)hideTabBar:(UITabBarController *)tabbarcontroller
{
// 隐藏tabbar
[UIView animateWithDuration:UINavigationControllerHideShowBarDuration animations:^{
CGFloat H = 50;
if (kDevice_Is_iPhoneX) {
H = 90;
}
for(UIView *view in tabbarcontroller.view.subviews)
{
if([view isKindOfClass:[UITabBar class]])
{
[view setFrame:CGRectMake(view.frame.origin.x,
view.frame.origin.y + H,
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 + H)];
}
}
}];
}
+ (void)showTabBar:(UITabBarController *)tabbarcontroller
{
// 显示tabbar
CGFloat H = 50;
if (kDevice_Is_iPhoneX) {
H = 90;
}
[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 - H,
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 - H)];
}
}
}];
}
// 判断iPhone X的宏定义
#define kDevice_Is_iPhoneX ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125, 2436), [[UIScreen mainScreen] currentMode].size) : NO)````
网友评论