美文网首页程序员
snapchat tablebar切换方式实现

snapchat tablebar切换方式实现

作者: flybear_Li | 来源:发表于2018-08-15 07:33 被阅读0次

    国外的一些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://img.haomeiwen.com/i3613568/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

    相关文章

      网友评论

        本文标题:snapchat tablebar切换方式实现

        本文链接:https://www.haomeiwen.com/subject/idcibftx.html