在使用了 navigationController
后,將包含三個tableView
的視圖貼到push
出來的是視圖上,出現tableView
上移問題,效果如下:
tableView上移.png
遇到這種情況,解決方案有以下幾種:
方案一:關閉tableView
的自動適配布局,手動設置其位置
self.automaticallyAdjustsScrollViewInsets = NO;// 默認是YES
方案二:改變edgesForExtendedLayout
在iOS 7中,引入了關于edgesForExtendedLayout
的新屬性,默認值為UIRectEdgeAll(四周邊緣均延伸)
self.edgesForExtendedLayout = UIRectEdgeNone;// 推薦使用
//還可以設置其為UIRectEdgeLeft /UIRectEdgeRight
這時會發現導航欄變灰了
導航欄變灰.png
可以將導航欄的半透明的屬性關閉掉
self.navigationController.navigationBar.translucent = NO;
或者給window
設置背景色
[UIApplication sharedApplication].keyWindow.backgroundColor = [UIColor whiteColor];
方案三:導航欄半透明屬性設置為NO
在iOS 7之前translucent
默認就是NO
,在iOS 7就默認是YES
了。將導航欄的半透明屬性關閉掉,布局也是從導航欄下面開始了。
self.navigationController.navigationBar.translucent = NO;
參考
IOS開發-當遇到tableView整體上移時的解決方案
edgesForExtendedLayout iOS7新特性