modal

  • 除了push之外,还有另外一种控制器的切换方式,那就是Modal

  • 任何控制器都能通过Modal的形式展示出来

  • Modal的默认效果:新控制器从屏幕的最底部往上钻,直到盖住之前的控制器为止

以Modal的形式展示控制器
- (void)presentViewController:(UIViewController *)viewControllerToPresent animated: (BOOL)flag completion:(void (^)(void))completion

关闭当初Modal出来的控制器
- (void)dismissViewControllerAnimated: (BOOL)flag completion: (void (^)(void))completion;
  • 注意:以后想要把一个控制器的view添加到自己控制器的上面,一定要保证这个控制器不要被销毁。
- (IBAction)modal:(id)sender {


    TwoViewController *vc = [[TwoViewController alloc] init];
    vc.view.backgroundColor = [UIColor yellowColor];


    // 模仿modal效果,Modal出来的控制器添加窗口上面
    // 以后开发经验。以后一个控件只要想显示到最前面,就添加到窗口。

      // 获取窗口
      UIWindow *window = [UIApplication sharedApplication].keyWindow;
      [window addSubview:vc.view];

     // 往下平移一个控制器的高度
     vc.view.transform = CGAffineTransformMakeTranslation(0, self.view.bounds.size.height);

    [UIView animateWithDuration:0.25 animations:^{
        // 清空形变
        vc.view.transform = CGAffineTransformIdentity;
    }];

    // 强引用modal出来的控制器
    self.presentVC = vc;



//    UIView animateWithDuration:<#(NSTimeInterval)#> animations:<#^(void)animations#> completion:<#^(BOOL finished)completion#>

    // modal一个控制器
    [self presentViewController:vc animated:YES completion:nil];

    NSLog(@"%@",self.presentedViewController);
}
  • modal出谁,谁就有权利dismiss

  • 谁modal控制器,谁也有权利dismiss

 [self dismissViewControllerAnimated:YES completion:nil];
  • 在iPhone开发中

    • Modal是一种常见的切换控制器的方式
    • 默认是从屏幕底部往上弹出,直到完全盖住后面的内容为止
  • 在iPad开发中

    • Modal的使用频率也是非常高的
    • 对比iPhone开发,Modal在iPad开发中多了一些用法

    呈现样式

    • 什么叫呈现样式
    • Modal出来的控制器,最终显示出来的样子
  • Modal常见有4种呈现样式

    • UIModalPresentationFullScreen :全屏显示(默认)
    • UIModalPresentationPageSheet
      • 宽度:竖屏时的宽度(768)
      • 高度:当前屏幕的高度(填充整个高度)
    • UIModalPresentationFormSheet :占据屏幕中间的一小块
    • UIModalPresentationCurrentContext :跟随父控制器的呈现样式

    过渡样式

    • 什么叫过渡样式

      • Modal出来的控制器,是以怎样的动画呈现出来
    • Modal一共4种过渡样式

      • UIModalTransitionStyleCoverVertical :从底部往上钻(默认)
      • UIModalTransitionStyleFlipHorizontal :三维翻转
      • UIModalTransitionStyleCrossDissolve :淡入淡出
      • UIModalTransitionStylePartialCurl :翻页(只显示部分,使用前提:呈现样式必须是UIModalPresentationFullScreen)

results matching ""

    No results matching ""