snapchat tablebar切换方式实现

国外的一些app总是引领着国内的潮流。snapchat上面的交互和动画总是走在新颖时尚的前沿,整体框架交互顺畅,动画顺滑自然,在对产品体验更严苛的北美市场,依然深受年轻一代的喜爱。今天,我们来实现类似snapchat底部导航栏变魔术一样的切换效果,至于动画,因为太花时间,就不展开模仿,这里只实现snapchat切换方式。
如下动画


snapchat_tablebar.gif

1.建立常规maintable bar的数组。将三个主页面的控制器丢进去,先实现普通的table bar切换。代码如下:

- (void)initViewControllers {
    FirstPageViewController *firstVC = [[FirstPageViewController alloc] init];
    SecondPageViewController  *secondVC = [[SecondPageViewController alloc] init];
    ThirdPageViewController  *thirdVC = [[ThirdPageViewController alloc] init];
    CameraPageViewController *cameraVC = [[CameraPageViewController alloc] init];
    NSArray *viewControllers = @[firstVC, secondVC, thirdVC];
    NSMutableArray *arrayM = [NSMutableArray arrayWithCapacity:viewControllers.count];
    _mainRootViewControllers = [NSMutableArray arrayWithCapacity:viewControllers.count];
    
    for (int i = 0; i < viewControllers.count; i++) {
        UIViewController *baseVC = viewControllers[i];
        
        [_mainRootViewControllers addObject:baseVC];
        
        [arrayM addObject:baseVC];
    }

    self.viewControllers = arrayM;
    
    //默认进入 around 页面
    self.selectedIndex = PdMainPageIndexAround;
}

自定义的tabble bar,选中的时候需要根据被选中的index做UI切换:

- (void)setSelectedIndex:(NSUInteger)selectedIndex {
    [_customMainTabBar configSelectIndex:selectedIndex];
    
    [super setSelectedIndex:selectedIndex];
}

进入类似snapchat相机拍照页面的时候,会present出相机页面。

#pragma mark - 进入相机拍照页面
- (void)mainTabBarAroundBtnDidClicked:(PdMainTabBar *)mainTabBar {
    CameraPageViewController *cameraPageVC = [[CameraPageViewCont![tablebar.gif](https://upload-images.jianshu.io/upload_images/3613568-e7ffa2f555276f15.gif?imageMogr2/auto-orient/strip)
roller alloc] init];
    [self presentViewController:cameraPageVC animated:YES completion:nil];
}

自定义table bar的实现,观察snapchat的切换过程,会发现,一共三个普通页面,从左至右为A,B,C。除了中间table bar,命名为Camera,其余地方的table bar只相应一次点击,不会连续相应点击事件,即第一次点击A显示A,第二次点击A的时候还是选中该A页控制器,不进行切换;点击中间table bar的时候,第一次点击之时,会切换到拍照页面Camera的入口;如果连续点击,第二次则进入拍照页面Camera。如果切换到非中间table bar页面,则中间table bar又会恢复至初始页面。如下动画过程:


tabbarswitch.gif

最后show you the code:
https://github.com/Bigjohn123/tabbarSwitch

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,357评论 3 119
  • 转载请注明出处(https://www.jianshu.com/p/5f538820e370),您的打赏是小编继续...
    福later阅读 30,007评论 8 73
  • 李笑来老师在得到上开通的《通往财富自由之路》是最需要思考和执行力的专栏,就像笑来老师本人说的那样。 在邀请词中谈到...
    柯南教英语阅读 535评论 0 3
  • 未辜负7月的美好时光,感谢身边的朋友给的支持与鼓励,也感谢自己的笃定,给自己最大的拥抱就是加油亲爱的! 7月也是暑...
    丽君时光记阅读 233评论 0 0

友情链接更多精彩内容