iOS導航欄佈局相關
iOS 7以後在ViewController裡面引進了一系列屬性用於管理頁面佈局。
下面是Apple官方提供的文件解釋,看過之後還是覺得太過於抽象,於是用程式碼來實驗吧。
**edgesForExtendedLayout
**
The extended edges to use for the layout.
**automaticallyAdjustsScrollViewInsets
**
A Boolean value that indicates whether the view controller should automatically adjust its scroll view insets.
**extendedLayoutIncludesOpaqueBars
**
A Boolean value indicating whether or not the extended layout includes opaque bars.
edgesForExtendedLayout
新建單個頁面的專案,然後加上UINavigationController
把背景設定成紅色,介面效果如下:
所以可以看到在iOS7後,View的佈局是預設全屏的,Navigation Bar預設是半透明的,於是在Navigation Bar下面可以看到紅色的背景。
- (void)viewDidLoad {
[super viewDidLoad];
self.edgesForExtendedLayout = UIRectEdgeNone;
}
將edgesForExtendedLayout設定成UIRectEdgeNone,表明View是不要擴充套件到整個螢幕的。頁面效果如下:
UIRectEdge是個列舉型別,其他的值通過字面意思也是非常容易理解的。
typedef enum: NSUInteger
{
UIRectEdgeNone = 0,
UIRectEdgeTop = 1 << 0,
UIRectEdgeLeft = 1 << 1,
UIRectEdgeBottom = 1 << 2,
UIRectEdgeRight = 1 << 3,
UIRectEdgeAll = UIRectEdgeTop | UIRectEdgeLeft | UIRectEdgeBottom | UIRectEdgeRight
} UIRectEdge;
**automaticallyAdjustsScrollViewInsets
**
這個屬性用於如果頁面是ScrollView或者UITableView,通常我們希望ScrollView或者UITableView內容顯示是在UINavigation Bar下面。
通過設定
edgesForExtendedLayout = UIRectEdgeNone
或者
self.navigationController.navigationBar.translucent =NO;
可以讓view的佈局從UINavigation Bar下面開始,不過一個副作用就是當頁面滑動的時候,view是沒有辦法佔據全屏的。
automaticallyAdjustsScrollViewInsets就可以很好的完成這個需求。
self.automaticallyAdjustsScrollViewInsets = NO;
;
self.automaticallyAdjustsScrollViewInsets = YES;
這時可以看到UITableView的內容會從UINavigation Bar下面開始,並且這個頁面的View還是佔據整個螢幕的,所以這一個屬性完全搞定!
extendedLayoutIncludesOpaqueBars
如果狀態列是不透明的,那麼頁面的佈局預設是不會包含狀態列的,除非將這個屬性設定成為YES。所以如果你的頁面擴充套件到Navigation Bar (edgesForExtendedLayout=UIRectEdgeAll),要是這個屬性設定成NO (default), 如果狀態列是不透明的話,頁面是不會擴充套件到狀態列的。
在這篇文章 裡面提到有些時候automaticallyAdjustsScrollViewInsets並不能幫助我們正常計算ScrollView/TableView的Inset,這時候就自己設定咯。
self.myTableView.contentInset = UIEdgeInsetsMake(64, 0, 0, 0);
相關文章
- 網頁佈局------導航欄下標縮放顯示網頁
- iOS 導航欄的控制iOS
- flutter佈局-9-appbar導航欄和狀態列FlutterAPP
- 【導航】Python相關Python
- ios自定義簡約導航欄iOS
- iOS中AutoLayer自動佈局流程及相關方法iOS
- CSS 兩欄佈局和三欄佈局CSS
- 常用兩欄佈局和三欄佈局
- iOS定製UISearchBar導航欄 同步iOS11iOSUI
- iOS隱藏導航欄正確做法iOS
- 居中佈局、三欄佈局
- 關於iOS 狀態列、導航欄的幾處筆記iOS筆記
- CSS佈局之三欄佈局CSS
- 論文相關參考導航
- iOS 超Easy實現 漸變導航欄iOS
- iOS逆向之分析微信導航欄實現iOS
- iOS隱藏導航欄的返回按鈕iOS
- iOS開發:給UIWebview的導航欄新增返回、關閉按鈕iOSUIWebView
- CSS佈局相關基本概念CSS
- iOS 導航欄顏色透明度漸變iOS
- iOS狀態列和導航欄的設定iOS
- CSS-常見兩欄、三欄佈局(雙飛翼佈局、聖盃佈局)CSS
- 頁面佈局的相關內容
- D3佈局的相關apiAPI
- WordPresscategory導航欄Go
- 三欄佈局之自適應佈局
- 佈局管理器——相對佈局
- CSS:兩欄佈局CSS
- 簡易的iOS導航欄顏色漸變方案iOS
- iOS導航欄標題錯亂的解決方法iOS
- qml 導航欄TabBar 工具欄ToolBartabBar
- CSS:三欄佈局之雙飛翼佈局CSS
- 【iOS】關於 UICollectionView 的自定義佈局iOSUIView
- CSS 三欄佈局之聖盃佈局和雙飛翼佈局CSS
- GitHub 導航欄加強Github
- HTML橫向導航欄HTML
- Flutter 導航欄AppBarFlutterAPP
- Tablayout實現導航欄TabLayout