圖中的導(dǎo)航視圖是存儲(chǔ)在導(dǎo)航控制器視圖屬性中的視圖序厉,圖中的所有其他視圖都是由導(dǎo)航控制器管理的不透明視圖層次的一部分。
導(dǎo)航控制器使用多個(gè)對(duì)象來實(shí)現(xiàn)導(dǎo)航界面了溪王,我們負(fù)責(zé)提供這些對(duì)象腮鞍,其余的是由導(dǎo)航控制器本身創(chuàng)建的值骇。導(dǎo)航控制器創(chuàng)建導(dǎo)航欄和工具欄,用于導(dǎo)航界面移国,并負(fù)責(zé)管理這些視圖吱瘩。簡單來說,導(dǎo)航控制器是一個(gè)特殊的容器迹缀,可以控制視圖控制器之間的切換使碾。
IOS7 edgesForExtendedLayout
視圖控制器的UI界面,跳轉(zhuǎn)時(shí)出現(xiàn)偏移問題祝懂,這個(gè)問題與導(dǎo)航條有關(guān)票摇,簡單介紹一下導(dǎo)航條。
導(dǎo)航控制器有個(gè)導(dǎo)航條(UINavigationBar),這個(gè)導(dǎo)航條被所有的視圖控制器共享砚蓬,導(dǎo)航條(UINavigationBar)位于整個(gè)屏幕的上方(整個(gè)視圖的上方)兄朋,它管理著視圖控制器的NavigationItem。
edgesForExtendedLayout是一個(gè)類型為UIExtendedEdge的屬性怜械,指定邊緣要延伸的方向颅和,因?yàn)閕OS7鼓勵(lì)全屏布局,它的默認(rèn)值是UIRectEdgeAll缕允,四周邊緣均延伸峡扩。就是說,當(dāng)你的容器是navigation controller時(shí)障本,默認(rèn)的布局將從navigationbar的頂部開始教届,即使視圖中上有navigationBar,下有tabBar驾霜,那么視圖仍會(huì)延伸覆蓋到四周的區(qū)域案训,從而導(dǎo)致界面偏移。這就是為什么所有的UI元素都往上漂移了44pt粪糙。
上圖的代碼即可解決偏移問題强霎。
UIButton按鈕點(diǎn)事件不響應(yīng),底部有留白
若出現(xiàn)此問題蓉冈,則需要考慮程序中是否存在TabBar城舞,若是存在,檢查隱藏TabBar的方式寞酿,如果使用self.tabBarController.tabBar.hidden=YES;需要修改隱藏方式家夺,這個(gè)方法雖然可以將tabBar隱藏,但是那片區(qū)域無法被其他視圖使用伐弹,如上圖灰色區(qū)域拉馋。此時(shí)需要改變隱藏tabBar方式:
在界面跳轉(zhuǎn)時(shí)使用 chat.hidesBottomBarWhenPushed = YES;即可隱藏。
注:以上為近期遇到的問題,希望能幫助遇到相同問題的人煌茴。若代碼出現(xiàn)問題柠逞,多多指教。