前言
很多社交類App,都會在App的tabbar中間有一個拍照按鈕或者發布按鈕什么,然后比如你現在在首頁,點擊了加號,這時會在這個首頁present出來一個頁面,然后點擊這個頁面的取消按鈕,你就會dismiss掉這個頁面,然后,頁面和tabbar上的已選Item,都停留在首頁上,下面就教大家怎么做這種效果。
實踐
效果是這樣的
效果圖
其實比較簡單,設置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