作死遇到的坑--view向下偏移


 

 

好大一個坑。--談談view偏移問題:

先上張圖,

圖中白色部分。上面的是從網上找的資源。將導航欄隱藏之后用collectionView加上去而實現的滑動標簽功能。開始以為是代碼中的問題。然后仔細推敲了一遍別人代碼中的相關模塊。發現過了一天並沒有找到解決的地方。我一直以為是哪兒設置的屬性。例如frame什么的。今天早上來了之后。有鑽研了下。發現了幾個沒有看到過的屬性。可疑。的確可疑。

然后改了之后發現問題解決了。

先提出這兩個屬性吧。

sele.edgesForExtendedLayout 屬性

self.automaticallyAdjustsScrollViewInsets 屬性 

在IOS7以后viewController開始使用全屏布局的,而且是默認的行為通常涉及到布局就離不開這個屬性edgesForExtendedlayout,   它是一個類型為UIExtendedEdge的屬性,指定邊緣要延伸的方向。它的默認值很自然地是UIRectEdgeAll,四周邊緣均延伸,也就是說,如果即使視圖中有navigationBar,下有tabBar,那么視圖仍會延伸覆蓋到四周的區域。因為一般為了不讓tableview不延伸到navigationBar下面,屬性設置為UIRectEdgeNone。

那么此時發現導航欄變灰了,這樣設置: self.navigationController,navigationbar.translucent = No;

*NavigationBar的translucent屬性:看下官方API文檔。

翻譯過來大致是 :translucent默認屬性是yes,如果navigationBar有自定義的背景圖,那么當屬性置為Yes,且放了一張不透明的圖,那么效果是自動會把這個圖弄成半透明;

如果設置為No,放了一半透明的圖:

如果barstyle是UIBarStyleBlack,效果是半透明的圖自動加上黑色背景。

如果是UIBarStyleDefault,效果是半透明的圖自動加上白色背景。

如果設置了barTintColor,效果是半透明的圖自動加上barTintColor的背景。

IOS7 viewController新增屬性automaticallyAdjustsScrollViewInsets,即是否根據按所在界面的navigationBar與tabbar的高度,自動調整scrollview的inset。

即UITableView頂部有一個空白區域。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM