手把手教你做点击tabbarItem弹出一个controller

前言

很多社交类App,都会在App的tabbar中间有一个拍照按钮或者发布按钮什么,然后比如你现在在首页,点击了加号,这时会在这个首页present出来一个页面,然后点击这个页面的取消按钮,你就会dismiss掉这个页面,然后,页面和tabbar上的已选Item,都停留在首页上,下面就教大家怎么做这种效果。

实践

效果是这样的


手把手教你做点击tabbarItem弹出一个controller_第1张图片
效果图

其实比较简单,设置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

你可能感兴趣的:(手把手教你做点击tabbarItem弹出一个controller)