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

前言

很多社交类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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容