如题,分析一下页面层级。
页面层级概念比较好理解,就是上边的层盖住下边的层,这样一层一层的堆叠起来。
在 uiview 内部通过 addsubviews 来增加一层页面。
但是涉及到 uiviewcontroller 操作的时候是啥样的呢。
实验基于swift 5.0
譬如现在有一个页面层级关系如下:
windowA
|- viewControllerA
|- subviewA
|- viewC
pushViewController / popViewController
通过viewControllerA的navi在页面栈内推出另外一个viewcontrollerB的情况
页面层级关系如下:
pushViewController
windowA
|- viewControllerB
|- subviewB
|- viewC
popViewControllerAnimated
windowA
|- viewControllerA
|- subviewA
|- viewC
present / dismiss
viewController自身在所在window推出另一个viewControllerB的情况。
页面层级关系如下:
present
windowA
|- viewC
|- viewControllerB
|- subviewB
dismiss
windowA
|- viewC
|- viewControllerA
|- subviewA
多window的情况
上述操作都只在所在window内部起变化,不会跨window。
多个window的重叠情况是根据windowLevel来决定的,数字越大越在上边。