Modal

  • 切换控制器

  • 模态

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

  • 新的控制器从屏幕底部往上钻

  • 弹出的控制器和之前的控制器没有太大联系的时候

    • 应用场景:注册某个app
  • presentViewController:animated:completion:^{}

  • dismissViewControllerAnimated:completion:

modal

  • modal不仅可以在modal出来的控制器里dismiss,还可以在当前控制器里dismiss掉

  • 问题一:modal出来的控制器要不要强引用?

    • 要强引用
    • 由当前的presentedViewController强引用
  • 问题二:modal出来的控制器的view,是添加到哪里的?

    • modal出来的控制器是添加到窗口上的
  • 模拟一个modal效果

    • view添加到窗口(keyWindow)上面
      • [UIApplication sharedApplication].keyWindow
    • 修改y值,为屏幕宽度
      • 取出frame(三步)
        • 临时frame存
        • 改临时的frame的y
        • 把临时的frame赋值给控制器view的frame
    • 添加动画
    • modal出来的控制器的view被window强引用
    • modal出来的控制器没有强引用
      • 注意:如果控制器被销毁,那么它里面的业务逻辑是没有办法处理的
      • 解决:设置控制器属性,给控制器属性赋值

你可能感兴趣的:(Modal)