美文网首页iOS常用iOS学习专题ios
iOS 弹出半屏的导航器

iOS 弹出半屏的导航器

作者: 整个夏天 | 来源:发表于2020-09-09 15:09 被阅读0次

前言

在开发中我们经常碰到从底部弹出的弹框界面,如果只是单个的界面,可以使用view加底部位移动画的方式来完成这样的效果,但如果需要弹出的是一个导航器的情况我们该如何处理了?

普通的底部弹框,只能处理单个界面,如果需要push到下一个界面无法处理,如果强撸那我们不是要自己写一个导航器?

Jietu20200909-145752.gif

导航器为基础的弹框,可以进行push以及pop的操作

Jietu20200909-145141.gif

实现原理

iOS中所有的界面都在最底层的window中,例如我们初始化程序的时候设置windowrootViewController.
同理我们可以再创建一个window将其放在屏幕中你想展示的位置即可.

相关代码

            //创建蒙层
            UIView * view = [[UIView alloc] init];
            view.backgroundColor = UIColor.blackColor;
            view.alpha = 0.2;
            view.frame = BTUtils.APP_WINDOW.bounds;
            [BTUtils.APP_WINDOW addSubview:view];
            
            //创建测试导航器以及vc
            TestWindowViewController * vc=[TestWindowViewController new];
            BTNavigationController * nav = [[BTNavigationController alloc] initWithRootViewController:vc];
            
            //创建window,并将window的坐标设置在屏幕底部,设置windowLevel防止获取默认window失败
            self.testWindow = [[UIWindow alloc] initWithFrame:CGRectMake(0, BTUtils.SCREEN_H, BTUtils.SCREEN_W, BTUtils.SCREEN_H - 200)];
            self.testWindow.windowLevel = UIWindowLevelAlert;
            self.testWindow .backgroundColor = UIColor.redColor;
            [self.testWindow  setBTCornerRadiusTop:10];
            self.testWindow .rootViewController = nav;
            self.testWindow.hidden = NO;
            
            //执行弹出的加载动画
            [UIView animateWithDuration:.35 animations:^{
                self.testWindow .BTTop = 200;
            }];
            
            //消失的回调处理
            __weak ViewController * weakSelf=self;
            vc.blockSuccess = ^(NSObject * _Nullable obj) {
                [UIView animateWithDuration:.35 animations:^{
                    self.testWindow .BTTop = BTUtils.SCREEN_H;
                } completion:^(BOOL finished) {
                    [view removeFromSuperview];
                    weakSelf.testWindow.rootViewController = nil;
                    weakSelf.testWindow = nil;
                }];
                
            };

相关文章

  • iOS 弹出半屏的导航器

    前言 在开发中我们经常碰到从底部弹出的弹框界面,如果只是单个的界面,可以使用view加底部位移动画的方式来完成这样...

  • “监听用户截屏”弹出分享窗口

    从 iOS 7 开始,苹果提供了监听用户截屏操作的通知: 我们可以使用这个通知来做例如:截屏弹出分享窗口的功能。

  • vivo origin OS 5.10-锁屏密码盘

    origin OS 5.10优化了锁屏密码盘的交互,采用非模态卡片由底部弹出,而不再用底部升起的半屏弹窗的方式;弹...

  • RN笔记-Navigator和TabNavigator

    RN提供两种导航器:NavigatorIOS和Navigator,NavigatorIOS只适配iOS,而Navi...

  • Flutter实现类似iOS的模态跳转

    flutter页面跳转默认的动画为: Android:从底部弹出 (iOS - modal)iOS:从右侧弹出 (...

  • 2021-08-06

    uni-app强制横屏在ios上面不生效问题及半屏问题 1.manifest.json文件中distribute下...

  • 关于iOS横竖屏适配

    关于iOS横竖屏适配 关于iOS横竖屏适配

  • flutter-alert

    弹出一个iOS样式的弹出框ios-alert.png代码: 默认样式的默认样式.pngCupertinoAlert...

  • Xcode使用技巧之跳转栏

    上篇文章中对导航器区域的介绍只是单单介绍了符号导航器的使用技巧,其中还有测试导航器,调试导航器和断点导航器这三个比...

  • ReactNative全面屏(Android)适配问题

    现在是全面屏的时代,Android手机现在也是各种全面屏,“刘海屏”,“弹出摄像头”,"水滴屏",“挖孔屏”,伴随...

网友评论

    本文标题:iOS 弹出半屏的导航器

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