前言
很多社交類App,都會(huì)在App的tabbar中間有一個(gè)拍照按鈕或者發(fā)布按鈕什么,然后比如你現(xiàn)在在首頁,點(diǎn)擊了加號(hào),這時(shí)會(huì)在這個(gè)首頁present出來一個(gè)頁面,然后點(diǎn)擊這個(gè)頁面的取消按鈕,你就會(huì)dismiss掉這個(gè)頁面,然后,頁面和tabbar上的已選Item,都停留在首頁上,下面就教大家怎么做這種效果。
實(shí)踐
效果是這樣的

效果圖
其實(shí)比較簡單,設(shè)置tabbarController的代理,實(shí)現(xiàn)代理方法
- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController {
// 如果點(diǎn)擊了中間的controller
if (viewController.tabBarItem.tag == 3) {
// 彈出一個(gè)controller
PresentViewControlller *presentVC = [[PresentViewControlller alloc] init];
[self presentViewController:presentVC animated:YES completion:nil];
// 不允許選擇這個(gè)頁面頁面
return NO;
} else {
return YES;
}
}
這里比較重要的是,要給沒個(gè)viewController在初始化的時(shí)候,進(jìn)行tag的設(shè)定,以便進(jìn)行區(qū)分
viewController.tabBarItem.tag = ...;
然后,你會(huì)很想知道中間按鈕是怎么居中的,設(shè)置如下
viewController.tabBarItem.imageInsets = UIEdgeInsetsMake(5, 0, -5, 0);
tabbarItem上的標(biāo)題也是可以挪動(dòng)的
viewController.tabBarItem.titlePositionAdjustment = UIOffsetMake(0, -3);
結(jié)語
具體參考,可以在git上下載我的demo
https://github.com/ZhaoheMHz/Tabbar-Tap-Present