currentContext
和overCurrentContext
的docs具有相同的描述。
我能发现的区别是:
当它们可用时:
@available(iOS 3.2, *)
case currentContext
@available(iOS 8.0, *)
case overCurrentContext
使用
currentContext
,在解除呈现的视图控制器之后,将调用覆盖视图控制器的viewWillAppear
(它不必是提供上下文的视图控制器)。它不会被调用。还有什么区别吗?
最佳答案
这与fullScreen
和overFullScreen
之间的区别完全相同。第一个将视图从它所覆盖的区域中移除;第二个不会,它只是覆盖它。
(在这两种情况下,如果显示的视图控制器的主视图的背景色具有某种透明度,则很容易从视觉上看到这种差异。但行为的差异更为重要;有些视图在突然从视图层次结构中删除时会变得不高兴,因此最好保留它们并使用.over
变量。)
使用currentContext,在解除呈现的视图控制器之后,将调用覆盖视图控制器的viewWillAppear(它不必是提供上下文的视图控制器)。使用过电流上下文时,不会调用它。
那只是我刚才说的话的后果。对于over
,viewWillAppear
不会在被删除时调用,因为视图从一开始就没有消失过;它只是位于所呈现视图的后面。同样,这与fullScreen
和overFullScreen
完全平行。