iOS 模态弹出(Modal)

本文详细介绍了iOS中模态视图的使用,包括何时使用模态视图,如何通过presentModalViewController:方法呈现,以及如何通过dismissModalViewControllerAnimated:方法关闭。此外,还探讨了modalTransitionStyle属性的不同动画效果,如CoverVertical、FlipHorizontal、CrossDissolve和PartialCurl,并讲解了如何处理模态窗口的方法,如presentViewController:animated:和dismissViewControllerAnimated:。最后,提供了一个展示模态视图的示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 模态视图出现的场景一般是临时弹出的窗口,譬如:登陆窗口。
  • 以模态窗口的形式管理视图,当前视图关闭前其他视图上的内容无法操作。
1、弹出方法:presentModalViewController:
  • 由 视图控制器类对象调用presentModalViewController:   方法。

2、modalTransitionStyle属性

  • 模态视图弹出时可通过该属性设置不同的动画效果 ,包含类型如下:
  • UIModalTransitionStyleCoverVertical,  //自下而上
  • UIModalTransitionStyleFlipHorizontal, //自左至右180度翻转
  • UIModalTransitionStyleCrossDissolve, //淡出效果
  • UIModalTransitionStylePartialCurl //翻页效果


3、关闭方法:dismissModalViewControllerAnimated:

  • 由 视图控制器类对象调用dismissModalViewControllerAnimated:  方法。

4、获取不同的模态窗口(主要的属性)

  • @property(nonatomic,readonly) UIViewController *presentedViewController ;//当前控制器模态出的窗口
  • @property(nonatomic,readonly) UIViewController *presentingViewController;//模态出当前控制器的窗口


5、处理模态窗口(主要的方法)

  • - (void)presentViewController:(UIViewController *)viewControllerToPresent animated: (BOOL)flag completion:(void (^)(void))completion);//显示想要显示的模态窗口
  • - (void)dismissViewControllerAnimated: (BOOL)flag completion: (void (^)(void))completion);//关闭当前显示的模态窗口
  • -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id) //当前控制器模态另一个窗口并传输数据时调用的方法


6、示例

        ModalTestController *vc = [[ModalTestController alloc] init];
        vc.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
        vc.hidesBottomBarWhenPushed = YES;
        UINavigationController *navi = [[UINavigationController alloc] initWithRootViewController:vc];
        navi.definesPresentationContext = YES;
        navi.modalPresentationStyle = UIModalPresentationCurrentContext;
        [self.navigationController presentViewController:navi animated:YES completion:^{
            navi.navigationBarHidden = YES;
        }];

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值