在iOS7以后 UIViewController 開始使用全屏布局(full-screen layout)匆笤,而且是默認(rèn)的屬性疚脐。通常涉及到布局郭计,就離不開這個(gè)屬性 edgesForExtendedLayout,它是一個(gè)類型為UIExtendedEdge的屬性,指定UIViewController上的根視圖self.view邊緣要延伸的方向迅栅。由于iOS7鼓勵(lì)全屏布局,所以它的默認(rèn)值是UIRectEdgeAll,四周邊緣均延伸慈省,就是說,如果即使視圖中上有UINavigationBar眠菇,下有UITabBar边败,那么視圖仍會(huì)延伸覆蓋到四周的區(qū)域。
edgesForExtendedLayout
通過設(shè)置此屬性捎废,你可以指定view的邊(上笑窜、左、下登疗、右)延伸到整個(gè)屏幕排截。
`typedef NS_OPTIONS(NSUInteger, UIRectEdge) {
UIRectEdgeNone = 0,
UIRectEdgeTop = 1 << 0,
UIRectEdgeLeft = 1 << 1,
UIRectEdgeBottom = 1 << 2,
UIRectEdgeRight = 1 << 3,
UIRectEdgeAll = UIRectEdgeTop | UIRectEdgeLeft | UIRectEdgeBottom | UIRectEdgeRight
} NS_ENUM_AVAILABLE_IOS(7_0);` </pre>
edgesForExtendedLayout__屬性是enum類型__UIRectEdge。默認(rèn)值是UIRectEdgeAll, 意味著view會(huì)被拓展到整個(gè)屏幕辐益。
當(dāng)在存有導(dǎo)航欄并且UIRectEdge默認(rèn)情況下断傲,添加一個(gè)高度為除去導(dǎo)航欄高度self.view.frame.size.height-64
的灰色視圖,并在視圖上下邊緣各添加一個(gè)方塊,就是這個(gè)樣子智政,此時(shí)的self.view是從屏幕頂?shù)狡聊坏椎?/p>
UIRectEdgeNone
而如果我們想要讓視圖的y坐標(biāo)從導(dǎo)航欄下開始計(jì)算认罩,就需要用到
> self.edgesForExtendedLayout=UIRectEdgeNone;
而用到UIRectEdgeNone后,self.view的坐標(biāo)是從導(dǎo)航欄底部到底部分欄頂部的续捂,此時(shí)的y=0是從導(dǎo)航欄底部開始的垦垂,而如果有用xib拉底部約束是跟視圖底部邊距為0的話那會(huì)很清楚觀察到視圖底部只到tabbar頂部為止
如果push到的頁面tabbar隱藏則延伸到底部宦搬,但是會(huì)有遇到頁面存在底部按鈕但點(diǎn)擊事件會(huì)被在原tabbar位置區(qū)域被遮擋而無法響應(yīng)的情況
UIRectEdgeBottom
而若是想從導(dǎo)航欄下開始計(jì)算y,但底部延伸到底的情況 或是上面提到的遇到頁面存在底部按鈕但點(diǎn)擊事件會(huì)被在原tabbar位置區(qū)域被遮擋而無法響應(yīng)的情況下則也可以使用UIRectEdgeBottom按字面意思則是矩形邊距向下延伸
UIRectEdgeTop | UIRectEdgeLeft | UIRectEdgeRight
UIRectEdgeTop則根據(jù)以上推斷就是頁面底部到tabbar底部位置向上延伸 [圖片上傳失敗...(image-87f3de-1701601438817)]
這個(gè)很有意思:UIRectEdgeTop就是整體view向上移動(dòng)(top對齊)
分析完上面的這些劫拗,UIRectEdgeLeft/UIRectEdgeRight也不難猜測间校,就是對左右的擴(kuò)展,便不再說了页慷。
最后撇簿,關(guān)于這個(gè)屬性僅應(yīng)用于嵌入在容器(如UINavigationController)中的控制器。窗口的根視圖控制器不會(huì)對該屬性作出響應(yīng)差购。該屬性的默認(rèn)值是UIRectEdgeAll四瘫。
This property is applied only to view controllers that are embedded in a container such as UINavigationController. The window’s root view controller does not react to this property. The default value of this property is UIRectEdgeAll.
作者:Singularity_Lee
鏈接:https://juejin.cn/post/6970981261816889374
來源:稀土掘金
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán)欲逃,非商業(yè)轉(zhuǎn)載請注明出處找蜜。