UITabBar,UINavigationBar的布局和隐藏问题
1. 前言
UITabBar,UINavigationBar非常的好用,但是畢竟是系統自帶的,不受自己完全掌握,對于布局和隱藏會有一些問題,現在就來談談我的想法和一些問題。
2. view,UITabBar,UINavigationBar之間的關系
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
1. 如果是在storyboard下,通過segue的連線實現跳轉,那么navigationBar會自動出現在屏幕里,很好做自動布局。
2. 如果通過代碼或者別的不連線的方式實現跳轉,那么需要注意的就是做自動布局時,如果設定和view的上下邊界距離,等到運行時,實際上是和navigationBar和tabBar的上下邊界距離。
3. 整個view的高度是固定的,只和手機的型號有關。如果沒有navigationBar和tabBar, 那么中間的內容高度就會相應地增加。
?
3. UITabBar的隱藏問題
我想很多人都遇到過UITabBar的隱藏問題,最容易的方法一般是下面兩種
UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@""]; [vc setHidesBottomBarWhenPushed:YES]; //隱藏tabbar [self.navigationController pushViewController:vc animated:YES]; self.hidesBottomBarWhenPushed = YES; UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@""]; [self.navigationController pushViewController:vc animated:YES]; self.hidesBottomBarWhenPushed = NO;這兩種方法我都試了,確實能夠隱藏tabBar,大部分情況下都沒問題。
不過我遇到了一個比較奇葩的隱藏問題,就是tabBar會有留白。追本溯源,這就和前面view和tabBar的關系有關了。
我的問題:
tabBar高度49px,頁面跳轉到一個聊天頁面,最下面的聊天框也是49px。
聊天框上面就是UITableView實現的聊天界面,設定UITableView到View的bottom間距為49px。
但是實際運行時,系統會認為是UITableView到TabBar的間距為49px,這就會出現下面的問題:
? ? ? ? ? ? ? ? ? ? ? ? ?
即使設定了UITabBar隱藏,但是系統運行時還是會出現留白,不過一閃而過就沒了。如果設定到view的bottom間距為0px,留白沒有了,但是聊天框占據了49px,聊天的最后一行拉不到,很奇葩的問題。
原因:我的感覺就是即使UITabBar隱藏了,系統到運行的時候,聊天頁面都viewDidAppear時,還是認為49px的間距是到已經隱藏的UITabBar上的。
?
4. 解決方法
最后的解決方法是,設置間距為0px,等到viewDidAppear時設置間距為49px
-(void)viewDidAppear:(BOOL)animated {[super viewDidAppear:YES];self.bottomSpace.constant = 49; //解決了留白問題 }轉載于:https://www.cnblogs.com/chenliyang/p/6554375.html
總結
以上是生活随笔為你收集整理的UITabBar,UINavigationBar的布局和隐藏问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: easyui使用时出现这个Uncaugh
- 下一篇: POJ 1017 Packets【贪心】