關于導航欄Translucent屬性的問題與鬼魅的64高度下移問題

1.這個屬性YES or NO 決定是否需要導航條/TabBar帶有半透明效果
官方解釋
UINavigationBar/UITabBar的translucent屬性解釋:默認為YES,可以通過設置NO來強制使用非透明背景,如果導航條使用自定義背景圖片,那么默認情況該屬性的值由圖片的alpha(透明度)決定,如果alpha的透明度小于1.0值為YES。如果手動設置translucent為YES并且使用自定義不透明圖片,那么會自動設置系統透明度(小于1.0)在這個圖片上。如果手動設置translucent為NO并且使用自定義帶透明度(透明度小于0)的圖片,那么系統會展示這張背景圖片,只不過這張圖片會使用事先確定的barTintColor進行不透明處理,若barTintColor為空,則會使用UIBarStyleBlack(黑色)或者UIBarStyleDefault(白色)

這是由于蘋果對滾動視圖的特殊性進行處理:對于類ScrollView,系統默認默認控制器屬性automaticallyAdjustsScrollViewInsets默認為YES。

請注意:iOS11開始,蘋果摒棄了automaticallyAdjustsScrollViewInsets屬性,改由contentInsetAdjustmentBehavior(枚舉值)控制,下面會有詳細的解釋。

  • contentInsetAdjustmentBehavior定義及使用(適用于iOS11+,替代automaticallyAdjustsScrollViewInsets)

    如果只想單純地設置導航條不偏移導航條+狀態欄和Tabbar高度,不想看解釋,可以直接使用該宏定義解決方法適配的問題(宏定義來源:http://www.lxweimin.com/p/352f101d6df1):

    還有viewController的edgesForExtendedLayout屬性,這樣三個屬性加frame的設置直接影響了view界面是否會下移64的高度
    1.UINavigationBar/UITabBar的translucent半透明屬性
    2.viewController的edgesForExtendedLayout屬性
    3.類ScrollView的automaticallyAdjustsScrollViewInsets屬性(iOS1前)與contentInsetAdjustmentBehavior(iOS11之后出現的枚舉值)這些個View :scrollView tableView collectionView webView
    4.frame的origin的y的值

學習文章地址

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容