1.iOS7 之后,所有的 UINavigationBar 默認(rèn)都是透明的了,同時(shí) View Controller 全部都使用全屏的 layout;
2.創(chuàng)建一個(gè)lab;
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 100, 40)];
label.text = @"Hello";
[self.view addSubview:label];
結(jié)果:label藏在導(dǎo)航欄下面。
解決辦法1:
-(void)viewDidLoad {
self.edgesForExtendedLayout = UIRectEdgeNone;
}
解決辦法2:把導(dǎo)航欄改成不透明:
self.navigationBar.translucent = NO;
3.不透明的導(dǎo)航欄,如果你還想讓 View 充滿全屏的話:
self.extendedLayoutIncludesOpaqueBars = YES;
4.對(duì)于 UITableView 來(lái)說(shuō):不需要什么設(shè)置就可以得到正確的結(jié)果;即導(dǎo)航欄是透明的, TableView 的 Cell 也正確的顯示了。
原因在于 automaticallyAdjustsScrollViewInsets。這個(gè)參數(shù)默認(rèn)設(shè)置為 YES,其作用是把子 View 中最下層的 ScrollView 的 UIEdgeInsets 進(jìn)行調(diào)整,在這里是設(shè)置成 (64, 0, 0, 0),這樣 TableView 的 Cell 位置就正確地顯示在導(dǎo)航欄下方的位置了。
如果你強(qiáng)制把 automaticallyAdjustsScrollViewInsets 設(shè)置成 NO,TableView 的第一個(gè) cell 跑到導(dǎo)航欄下面去.
5.默認(rèn)透明的導(dǎo)航欄,在 VC 中添加一個(gè) WebView 時(shí):WebView 頂部的位置沒(méi)有問(wèn)題,但是底部的位置出現(xiàn)錯(cuò)亂了
導(dǎo)致沒(méi)辦法滾動(dòng)到網(wǎng)頁(yè)的最低端了。解決方法是:
self.extendedLayoutIncludesOpaqueBars = YES;
記錄來(lái)源:
https://skyline75489.github.io/post/2015-11-27_uinavigation_bar_frame_affect.html