• 简单仿京东"筛选"界面 双导航栏控制器共存 by Nicky.Tsui


    大概就是这么一个效果

    如图.大概可以看到,"筛选"视图后面有一层视图盖住了后面原来的视图

    那么我们可以通过加一个view到导航栏控制器的view里面来实现

        //该view作为全局变量,后面关闭视图时要用
        backColorView = [[UIView alloc]initWithFrame:[UIScreen mainScreen].bounds];
        backColorView.backgroundColor = [UIColor blackColor];
        backColorView.alpha = .0;   //开始透明度为0,后面通过动画逐渐变黑
        UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tapAction)];
        [backColorView addGestureRecognizer:tap]; //加入触摸手势,点阴影区域时关闭右侧导航栏
        [self.navigationController.view addSubview:backColorView];
    /* 出现的动画 */
        [UIView animateWithDuration:.5 animations:^{
            backColorView.alpha = .3;
        } completion:^(BOOL finished) {
        }];
    

    然后就可以再往里面添加视图控制器了.

        /* 创建第二页对象 */
        sec = [[SecondViewController alloc]init];
        /* 传递seletor过去给第二个页面的vc */
        sec.sel = @selector(tapAction);
        /* 同上.这里要在第二个页面触发首页的关闭事件*/
        sec.target = self;
        /* 创建第二页的导航栏控制器 */
        navi = [[UINavigationController alloc]initWithRootViewController:sec];
        /* 仿京东的 导航栏视图不占全屏 */
        navi.view.frame = CGRectMake(ScreenWidth, 0, ScreenWidth-100, ScreenHeight);
        /* 把创建的第二个的导航栏控制器作为本导航栏控制器的子控制器 */
        [self.navigationController addChildViewController:navi];
        /* 把第二个导航栏控制器的视图加到本导航栏控制器的view上(事实上导航栏控制器的view是包含了导航栏,视图控制器的视图 */
        [self.navigationController.view addSubview:navi.view];
        /* 出现的动画 */
        [UIView animateWithDuration:.5 animations:^{
            backColorView.alpha = .3;
            navi.view.frame = CGRectMake(100, 0, ScreenWidth-100, ScreenHeight);
        } completion:^(BOOL finished) {
            
        }];
    

      

      移除/关闭视图:

    -(void)tapAction{
    
        NSLog(@"关闭");
    
        /* 关闭操作,先动画后移除 */
    
        [UIView animateWithDuration:.5 animations:^{
    
            backColorView.alpha  = 0;
    
            navi.view.frame = CGRectMake(ScreenWidth, 0, ScreenWidth-100, ScreenHeight);
    
        } completion:^(BOOL finished) {
    
            [backColorView removeFromSuperview];
    
            [navi.view removeFromSuperview];
    
            [navi removeFromParentViewController];
    
        }];
    
    }
    

      

      然后效果就这样了..当然还有其他的设置这里没有列出来,也只是简单的交互操作,看下demo就知道原理了

     

    DEMO下载

  • 相关阅读:
    AutoFac中常用方法说明
    DI之循环依赖
    NB/T 10215-2019 风力发电机组 测风传感器等最新能源行业标准
    DL/T 691-2019等最新电力行业标准
    TSG D7006-2020 压力管道监督检验规则
    YY/T 0595-2020 医疗器械 质量管理体系YY/T 0287-2017 应用指南
    GB/T 38775-2020系列电动汽车无线充电系统标准
    最新电动汽车安全标准
    GB 38032-2020 电动客车安全要求
    GB 38031-2020 电动汽车用动力蓄电池安全要求
  • 原文地址:https://www.cnblogs.com/sixindev/p/4505870.html
Copyright © 2020-2023  润新知