做了一個圖片、視頻瀏覽功能,需要在瀏覽時隱藏狀態(tài)欄,視頻、圖片全屏顯示出來。
創(chuàng)新互聯(lián)建站專注于長寧網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供長寧營銷型網(wǎng)站建設(shè),長寧網(wǎng)站制作、長寧網(wǎng)頁設(shè)計、長寧網(wǎng)站官網(wǎng)定制、微信小程序開發(fā)服務(wù),打造長寧網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供長寧網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
如果單純的是在導(dǎo)航push的viewController中進(jìn)行顯示,那狀態(tài)欄很容易控制。
在viewController中添加如下控制方法
那么如果是 presentViewController 呢?
分兩種情況,
1、
與上面的設(shè)置方法一致。
2、沒有設(shè)置 UIModalPresentationFullScreen ,實現(xiàn)了自定義動畫效果 transitioningDelegate 。
這個時候用上面的方法設(shè)置是行不通的。因為狀態(tài)欄還是歸負(fù)責(zé) present 你的vc的nav視圖所有。如果你想在 presentViewController 目標(biāo)vc上執(zhí)行狀態(tài)欄的控制,需要添加
另外,如果你的項目設(shè)置
就可以用下面的方法控制了。
1. 修改狀態(tài)欄的顯示樣式 白色/黑色
View controller-based status bar appearance 是否在 info.plist 中設(shè)置
設(shè)置為YES
局部:
? ? 1. -(void)viewWillAppear:(BOOL)animated
? ? {
? ? [super viewWillAppear:animated];
? ? [self.navigationController.navigationBar setBarStyle:UIBarStyleBlack];
? ? }
? ? 2. - (UIStatusBarStyle)preferredStatusBarStyle {
? ? return UIStatusBarStyleLightContent;
? ? }
? ? (1.2)這兩個方法配合使用才有效
? ? -(void)viewWillDisappear:(BOOL)animated{
? ? [super viewWillDisappear:animated];
? ? [self.navigationController.navigationBar setBarStyle:UIBarStyleDefault];
? ? }
全局:
? ? [self.navigationController.navigationBar setBarStyle:UIBarStyleBlack];
? ? - (UIStatusBarStyle)preferredStatusBarStyle {
? ? return UIStatusBarStyleLightContent;
? ? }
?設(shè)置為NO
局部:
? ? -(void)viewWillAppear:(BOOL)animated
? ? {
? ? [super viewWillAppear:animated];
? ? [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
? ? }
? ? -(void)viewWillDisappear:(BOOL)animated{
? ? [super viewWillDisappear:animated];
? ? [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault];
? ? }
全局:
? ? ?[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
2. 狀態(tài)的顯示和隱藏
View controller-based status bar appearance 是否在 info.plist 中設(shè)置
設(shè)置為YES
局部:
? ? YES 隱藏? NO 顯示
? ? -(BOOL)prefersStatusBarHidden{
? ? return YES;
? ? }
全局:
[UIApplication sharedApplication].statusBarHidden = YES; //YES 隱藏? NO 顯示
設(shè)置為NO
局部:
沒有辦法.
全局:
[UIApplication sharedApplication].statusBarHidden = YES; //YES 隱藏? NO 顯示
我們在開發(fā)App的時候,在遇到有狀態(tài)欄時,NavigationBar上面的按鈕,是極難點擊的,所以這個時候,最好我們能夠人為的隱藏掉狀態(tài)欄。
如果一直需要隱藏的話,直接在info.plist里面,添加Key值:View controller-based status bar appearance
如果沒有的話,步驟如下:
1、在任意一個位置點擊+號,即可進(jìn)行添加:
2.選擇:View controller-based status bar appearance這一項,所有的屬性,是按照ABC的排列順序排列的,所以找到對應(yīng)的即可;
3.將該Key的值,設(shè)置為NO;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
里面添加下面這句話:
[[UIApplication sharedApplication]setStatusBarHidden:YES];
再運(yùn)行程序就沒有狀態(tài)欄了。
狀態(tài)欄的字體為黑色:UIStatusBarStyleDefault
狀態(tài)欄的字體為白色:UIStatusBarStyleLightContent
狀態(tài)欄字體的顏色只由下面的屬性設(shè)定,默認(rèn)為白色:
解決個別vc中狀態(tài)欄字體顏色不同的辦法
在info.plist中 View controller-based status bar appearance 的 默認(rèn)值就是YES
如果View controller-based status bar appearance為YES 時 [UIApplication sharedApplication].statusBarStyle 無效。
解決方案:
當(dāng)vc在nav中時,上面方法沒用,vc中的preferredStatusBarStyle方法根本不用被調(diào)用。
原因是,[self setNeedsStatusBarAppearanceUpdate]發(fā)出后,只會調(diào)用navigation controller中的preferredStatusBarStyle方法,vc中的preferredStatusBarStyley方法跟本不會被調(diào)用。
解決辦法有兩個:
1.View controller-based status bar appearance = NO
2.View controller-based status bar appearance = YES
3.設(shè)置Status bar is initially hidden = YES
1.首先在plist文件里 添加Application requires iPhone environment ? 然后設(shè)置成 NO (如果不添加 默認(rèn)是yes,是yes的時候是另外一種狀態(tài)欄的設(shè)置方式,我設(shè)置了 沒成功 ,可能是我哪里設(shè)置的不對,所以這種方法不介紹了)。
2. 在Appdelegate文件里設(shè)置 主要的顏色。
如果你的界面大多數(shù)界面 需要黑的的狀態(tài)欄:?[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleDefault;
如果需要白色狀態(tài)欄:?[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
3.在個別界面 修改狀態(tài)欄
-(void)viewWillAppear:(BOOL)animated{ ?
? ?[superviewWillAppear:animated];
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
}
返回上層界面的時候在viewDidDisappear改回成原來的顏色
-(void)viewDidDisappear:(BOOL)animated{
[superviewDidDisappear:animated];
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
}
當(dāng)然你也可以根據(jù)其他條件判斷,然后修改成你想要的顏色。
注意: Application requires iPhone environment 的值為 YES 的時候 ?[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent; ? 這樣設(shè)置不起作用 。
希望能幫到你。
另外,如果狀態(tài)欄不顯示注意下是不是plist文件里給設(shè)置隱藏了
開發(fā)app時經(jīng)常用到的一個基本布局框架就是tabbar+navigation,也就是下方tabbar分模塊,然后在各個模塊中使用導(dǎo)航欄深入到各個界面。
有時候我們需要在跳轉(zhuǎn)到某些界面時隱藏下方的tabbar,怎么做呢,很簡單:
這樣就可以了,其實最后一行不要也能行。
只要在對某個界面設(shè)置隱藏后,從這個界面繼續(xù)深入往下的界面也是會自動隱藏的,不需要對每個都設(shè)置。
這里的bottombar不單單作用于tabbar,其他的bar也是可以的。但一般常用的還是tabbar。
查看作者首頁