天天品嘗iOS7甜點(diǎn) Day20:View controller content and navigation bars

視圖控制器導(dǎo)航欄

參考

視圖控制器在導(dǎo)航控制器中

edgesForExtendedLayout 屬性:

擴(kuò)展的邊緣布局。該屬性僅適用于嵌入到容器中(例如 UINavigationController)的視圖控制器。窗口的根視圖控制器不對此屬性做出反應(yīng)。默認(rèn)值為 UIRectEdgeAll。

1. 默認(rèn)值 UIRectEdgeAll

UIRectEdgeAll = UIRectEdgeTop | UIRectEdgeLeft | UIRectEdgeBottom | UIRectEdgeRight

默認(rèn)值 UIRectEdgeAll 在 Interface Builder 中的設(shè)置:

在視圖控制器中添加子視圖:

UIView *box = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 200, 200)];
box.backgroundColor = [UIColor blueColor];
[self.view addSubview:box];

顯示效果:

2. 正確設(shè)置 UIRectEdgeNone

代碼設(shè)置:self.edgesForExtendedLayout = UIRectEdgeNone;

Interface Builder 設(shè)置:

顯示效果:

滾動視圖在導(dǎo)航控制器中

automaticallyAdjustsScrollViewInset 屬性(iOS 11 deprecate ??):

一個(gè)布爾值,指示視圖控制器是否自動調(diào)整其滾動視圖的插入內(nèi)容。

此屬性的默認(rèn)值為YES,這使容器視圖控制器知道他們應(yīng)該調(diào)整此視圖控制器視圖的滾動視圖插入,以解決狀態(tài)欄,搜索欄,導(dǎo)航欄,工具欄或選項(xiàng)卡欄所占用的屏幕區(qū)域。 如果您的視圖控制器實(shí)現(xiàn)管理其自己的滾動視圖插入調(diào)整,請將此屬性設(shè)置為NO。

設(shè)置為 NO:

效果: 滾動視圖會嵌入到導(dǎo)航欄下方,頂部第一個(gè) cell 被遮擋,無法正常顯示。

當(dāng)然,現(xiàn)在很多 App 的頁面頂部的圖片有這種效果。

設(shè)置為 YES(默認(rèn))

效果,正常顯示 cell:

表格視圖在導(dǎo)航控制器中

UITableViewUIScrollView的子類,所以我們期望和上一個(gè)滾動視圖相同的效果,用到了同樣的屬性:

automaticallyAdjustsScrollViewInsets

同樣,如果設(shè)置為 NO,TableView 的上下都會被遮擋:

而如果設(shè)置為 YES,則上下都能正常顯示:

另外的一些情形:滾動視圖或者列表視圖嵌入在 UITabBarController 中

這種情況就算設(shè)置 automaticallyAdjustsScrollViewInset = YES 也于事無補(bǔ),底部那一塊還是會被遮住。

只需要取消勾選 Under Bottom Bars 這個(gè)屬性就好:

The End.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容