一般使用navgationbar的时候,我们会让其translucent = no,以适配 ios6和ios7的UI界面。这个时候的self.view的坐标原点,是在navgationbar的下面的,不会被bar遮挡。
接下来就是我遇到的问题的重点了:
如果A界面在viewdidappear界面已经出现之后,使navgationbar.hiden = yes,这时界面不会有变化,只是navgationbar不见了,navgationbar原来的位置留下了一片空白。
但是,如果这时候,我们进入了另外一个界面B,然后返回这个A界面,我们就会发现,ios系统自动帮我们适配了界面,navgationbar空白的位置被A界面上移而填充掉了。
经过测试,在viewwillappear 完成前使navgationbar.hiden = yes,坐标效果会和navgationbar.translucent = yes的效果一样;而如果在viewwillappear完成后,比如在viewdidappear里面填写navgationbar.hiden = yes,则ios系统不会帮我们上移坐标点,效果与navgationbar.translucent = NO一样,只是navgationbar不见了,navgationbar原来的位置留下
了一片空白。
{
这里总结说明一下,navgationbar.translucent = yes,无论在程序任何地方写这条属性,self.view的坐标都会被ios系统自动适配改变。而navgationbar.hiden = yes,则必须等待程序重新执行到viewWillApear方法后才会被系统自动适配改变坐标原点。
}
以下就是我操作navgationbar.hiden 属性而导致系统帮我自动调整了界面坐标的测试图。
下图是 navgationbar.translucent = NO,navgationbar.hiden = NO.
下图是按了按钮后,使navgationbar.hiden = YES;导航栏不见了。
下图是进入其它界面后,返回到原界面A。导航栏不见了,而且界面自动上移填充了原本导航栏的位置。