今天本来想利用ModalViewController做这样一件事情。在原有的view上该上一层半透明的view。
后来发现是不行的,虽然presentModalViewController我们看到的动画是在原有的view上盖了一层全屏的新view,但是其实下面的view被移除了。push也是一样。
即是说:虽然我们可以理解view是可以通过类似于栈结构来理解,在取之前的view时也可以通过这样一种存储方式从内存中存取,但是并不是说绘制view时是一层层叠加来绘制的。下面的view在disappear时已经被移除。可能它没有被unload,但是它已经不在当前视图内了。
所以显示时的视图大概就是这样一个层次:
---------------------------------------------------------------
各种view
---------------------------------------------------------------
viewcontroller的view或者其它某个全屏的view
---------------------------------------------------------------
window
---------------------------------------------------------------
今晚网上看了一些资料,发现其实present和dismiss一个modalviewcontroller时的动画也不一定是覆盖,还有包括翻页等等方法。下面是列举:
typedef enum { UIModalTransitionStyleCoverVertical = 0, UIModalTransitionStyleFlipHorizontal, UIModalTransitionStyleCrossDissolve, UIModalTransitionStylePartialCurl, } UIModalTransitionStyle;
嗯,所以当时想当然了。上述描述里可能有不准确的地方,大家如果有见解可以指正~~