前言
很多社交类App,都会在App的tabbar中间有一个拍照按钮或者发布按钮什么,然后比如你现在在首页,点击了加号,这时会在这个首页present出来一个页面,然后点击这个页面的取消按钮,你就会dismiss掉这个页面,然后,页面和tabbar上的已选Item,都停留在首页上,下面就教大家怎么做这种效果。
实践
效果是这样的
![](https://img.haomeiwen.com/i1682338/fa0ab0809352d6cb.gif)
其实比较简单,设置tabbarController的代理,实现代理方法
- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController {
// 如果点击了中间的controller
if (viewController.tabBarItem.tag == 3) {
// 弹出一个controller
PresentViewControlller *presentVC = [[PresentViewControlller alloc] init];
[self presentViewController:presentVC animated:YES completion:nil];
// 不允许选择这个页面页面
return NO;
} else {
return YES;
}
}
这里比较重要的是,要给没个viewController在初始化的时候,进行tag的设定,以便进行区分
viewController.tabBarItem.tag = ...;
然后,你会很想知道中间按钮是怎么居中的,设置如下
viewController.tabBarItem.imageInsets = UIEdgeInsetsMake(5, 0, -5, 0);
tabbarItem上的标题也是可以挪动的
viewController.tabBarItem.titlePositionAdjustment = UIOffsetMake(0, -3);
结语
具体参考,可以在git上下载我的demo
https://github.com/ZhaoheMHz/Tabbar-Tap-Present
网友评论