navigationController.navigationBar.hiden 导航栏隐藏引发的坐标自动变更

来源:互联网 发布:saas软件排名 编辑:程序博客网 时间:2024/06/15 18:08

一般使用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。导航栏不见了,而且界面自动上移填充了原本导航栏的位置。


0 0
原创粉丝点击