欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

iOS中狀態(tài)欄的基本使用方法匯總

 更新時(shí)間:2018年07月22日 10:31:09   作者:風(fēng)恣  
在iOS開(kāi)發(fā)過(guò)程中,經(jīng)常會(huì)設(shè)置狀態(tài)欄的樣式,所以下面這篇文章主要給大家介紹了關(guān)于iOS中狀態(tài)欄的基本使用的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下

一、狀態(tài)欄與導(dǎo)航欄

狀態(tài)欄:顯示時(shí)間、電池等信息

導(dǎo)航欄:顯示app頁(yè)面標(biāo)題,返回按鈕等

iOS7之前:狀態(tài)欄與導(dǎo)航欄是分開(kāi)的;

iOS7之后:狀態(tài)欄與導(dǎo)航欄合在一起;導(dǎo)航部分總高度(64)= 狀態(tài)欄高度(20) +導(dǎo)航欄內(nèi)容高度((44)

iPhoneX設(shè)備出現(xiàn)以后,狀態(tài)欄的高度變?yōu)?4,導(dǎo)航欄部分總高度(88) = 狀態(tài)欄(44) + 導(dǎo)航欄內(nèi)容高度(44)

二、設(shè)置狀態(tài)欄顯隱與字體樣式

iOS狀態(tài)欄可以設(shè)置顯示和隱藏,也可以設(shè)置文字的顏色。通過(guò)修改info.plist中的View controller-based status bar appearance屬性為NO或者YES,狀態(tài)欄的設(shè)置可區(qū)分為全局控制和局部控制。

全局控制:通過(guò)info.plist設(shè)置,或者調(diào)用全局方法。

分頁(yè)控制:在視圖控制器里通過(guò)prefersStatusBarHidden方法設(shè)置。

1.全局控制

默認(rèn)情況或者手動(dòng)設(shè)置View controller-based status bar appearance設(shè)置為NO,此時(shí)狀態(tài)欄需要全局設(shè)置,而且有兩種方法設(shè)置。

方法1:依次進(jìn)入Targets】->【General】->【Deployment Info】,然后可進(jìn)行進(jìn)行設(shè)置如下:


方法2:代碼設(shè)置

//1.設(shè)置狀態(tài)欄隱藏(YES)或顯示(NO)
[[UIApplication sharedApplication] setStatusBarHidden:NO];
 
//2.設(shè)置狀態(tài)欄字體顏色
//UIStatusBarStyleDefault,黑色(默認(rèn))
//UIStatusBarStyleLightContent,白色
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault];

注意:使用代碼控制全局的狀態(tài)欄,代碼的位置很重要;在AppDelegate中寫入可以設(shè)置整個(gè)App頁(yè)面的狀態(tài)欄樣式;

如果需要單獨(dú)設(shè)置其中一個(gè)頁(yè)面隱藏狀態(tài)欄,需要在進(jìn)入頁(yè)面時(shí)設(shè)置隱藏,退出頁(yè)面時(shí)設(shè)置顯示,以保證不影響其他頁(yè)面的狀態(tài)欄樣式。

2.分頁(yè)設(shè)置

在info.plist中設(shè)置View controller-based status bar appearance屬性為YES,狀態(tài)欄默認(rèn)顯示且字體黑色。此時(shí)全局設(shè)置的操作都是無(wú)效的,需要分頁(yè)設(shè)置才能修改其樣式,即:在每個(gè)視圖控制器或者控制器基類中使用如下代碼:

- (UIStatusBarStyle)preferredStatusBarStyle
{
 return UIStatusBarStyleLightContent; //返回白色
 //return UIStatusBarStyleDefault; //返回黑色
}

- (BOOL)prefersStatusBarHidden {
 return YES; //設(shè)置狀態(tài)欄隱藏
 //return NO; //設(shè)置狀態(tài)欄顯示
}

但是,這里存在一個(gè)問(wèn)題:如果當(dāng)前視圖控制器是UINavigationController的子視圖控制器,preferredStatusBarStyle并不會(huì)被調(diào)用。這是因?yàn)閷?dǎo)航控制器里的preferredStatusBarStyle才具有修改狀態(tài)欄樣式的能力,解決這個(gè)問(wèn)題的方法有兩種:

方法1:添加子類導(dǎo)航控制器

我們需要使用自定義的子類導(dǎo)航控制器,在其中添加如下的代碼:

- (UIStatusBarStyle)preferredStatusBarStyle {
 UIViewController *topVC = self.topViewController;
 return [topVC preferredStatusBarStyle];
}

方法2:放棄preferredStatusBarStyle

我們可以不使用preferredStatusBarStyle方法,而且直接在當(dāng)前視圖控制器中調(diào)用如下方法修改狀態(tài)欄。

//狀態(tài)欄和導(dǎo)航欄背景色為白色,狀態(tài)欄文字為黑色
self.navigationController.navigationBar.barStyle = UIBarStyleDefault;

//狀態(tài)欄和導(dǎo)航欄背景色為黑色,狀態(tài)欄文字為白色
self.navigationController.navigationBar.barStyle = UIBarStyleBlack;

三、設(shè)置狀態(tài)欄背景色

iOS7之后的狀態(tài)欄和導(dǎo)航欄融合在一塊,所以默認(rèn)情況下,狀態(tài)欄都是跟隨導(dǎo)航欄背景色的變化而變化。所以我們可以通過(guò)改變導(dǎo)航欄來(lái)修改狀態(tài)欄背景色:

//設(shè)置狀態(tài)欄與到導(dǎo)航欄都是不透明
self.navigationController.navigationBar.translucent = NO;
//設(shè)置狀態(tài)欄與到導(dǎo)航欄背景色都是橙色
[self.navigationController.navigationBar setBarTintColor:[UIColor orangeColor]];

當(dāng)然,我們也可以單獨(dú)設(shè)置狀態(tài)欄的背景色,示例代碼如下:

UIView *statusBar = [[[UIApplication sharedApplication] valueForKey:@"statusBarWindow”] 
 valueForKey:@"statusBar"];
if ([statusBar respondsToSelector:@selector(setBackgroundColor:)]) {
 statusBar.backgroundColor = [UIColor greenColor];
}

注意:如果是單獨(dú)設(shè)置某個(gè)頁(yè)面的狀態(tài)欄背景色,還需要在離開(kāi)頁(yè)面時(shí)恢復(fù)原樣。

四、啟動(dòng)頁(yè)隱藏狀態(tài)欄

App啟動(dòng)頁(yè)如果不需要顯示狀態(tài)欄信息,可以設(shè)置隱藏。設(shè)置方法依然是修改info.plist,只需要設(shè)置Status bar is initially hidden即可,將其設(shè)置為YES之后,啟動(dòng)頁(yè)將暫時(shí)不顯示狀態(tài)欄,操作如下:


五、狀態(tài)欄、導(dǎo)航欄相關(guān)的常用宏定義

#pragma mark - 設(shè)備參數(shù)
//屏幕寬
#define ZS_ScreenWidth [[UIScreen mainScreen] bounds].size.width

//屏幕高
#define ZS_ScreenHeight [[UIScreen mainScreen] bounds].size.height

//判斷設(shè)備類型是否iPhoneX
#define ZS_ISIphoneX (ZS_ScreenWidth == 375.f && ZS_ScreenHeight == 812.f ? YES : NO)

//導(dǎo)航欄高度
#define ZS_NavBarHeight (ZS_ISIphoneX ? 88.f : 64.f)

//狀態(tài)欄高度
#define ZS_StatusBarHeight (ZS_ISIphoneX ? 44.f : 20.f)

//導(dǎo)航欄內(nèi)容高度
#define ZS_NavBarContentHeight 44.0

//標(biāo)簽欄高度
#define ZS_TabBarHeight (ZS_ISIphoneX ? 49.f + 34.f : 49.f)

相關(guān)文章:

iOS導(dǎo)航欄使用

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • iOS11和iPhoneX適配的一些坑

    iOS11和iPhoneX適配的一些坑

    前陣子項(xiàng)目開(kāi)發(fā)忙成狗,就一直沒(méi)做iOS11的適配,直到XcodeGM版發(fā)布后,我胸有成竹的在iPhoneX上跑起項(xiàng)目,整個(gè)人都涼透了...下面總結(jié)一下我遇到的坑,感興趣的朋友一起看看吧
    2017-09-09
  • iOS開(kāi)發(fā)實(shí)現(xiàn)簡(jiǎn)單抽屜效果

    iOS開(kāi)發(fā)實(shí)現(xiàn)簡(jiǎn)單抽屜效果

    這篇文章主要為大家詳細(xì)介紹了iOS開(kāi)發(fā)實(shí)現(xiàn)簡(jiǎn)單抽屜效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • iOS開(kāi)發(fā)中對(duì)文件目錄的訪問(wèn)及管理的基本方法小結(jié)

    iOS開(kāi)發(fā)中對(duì)文件目錄的訪問(wèn)及管理的基本方法小結(jié)

    這篇文章主要介紹了iOS開(kāi)發(fā)中對(duì)文件目錄的訪問(wèn)及管理的基本方法小結(jié),代碼基于傳統(tǒng)的Objective-C,需要的朋友可以參考下
    2015-10-10
  • iOS中謂詞(NSPredicate)的基本入門使用教程

    iOS中謂詞(NSPredicate)的基本入門使用教程

    這篇文章主要給大家介紹了關(guān)于iOS中謂詞(NSPredicate)的基本入門使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-01-01
  • iOS設(shè)計(jì)模式——Category簡(jiǎn)單介紹

    iOS設(shè)計(jì)模式——Category簡(jiǎn)單介紹

    這篇文章主要介紹了iOS設(shè)計(jì)模式——Category簡(jiǎn)單介紹,有興趣學(xué)習(xí)的同學(xué)可以了解一下。
    2016-11-11
  • iOS調(diào)試Block引用對(duì)象無(wú)法被釋放的小技巧分享

    iOS調(diào)試Block引用對(duì)象無(wú)法被釋放的小技巧分享

    這篇文章主要給大家分享介紹了關(guān)于iOS調(diào)試Block引用對(duì)象無(wú)法被釋放的小技巧,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)各位iOS開(kāi)發(fā)者們具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • iOS判斷用戶是否打開(kāi)APP通知開(kāi)關(guān)

    iOS判斷用戶是否打開(kāi)APP通知開(kāi)關(guān)

    這篇文章主要為大家詳細(xì)介紹了iOS判斷用戶是否打開(kāi)APP通知開(kāi)關(guān)的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • swift 常用高階函數(shù)分享

    swift 常用高階函數(shù)分享

    Swift是一門面向協(xié)議的語(yǔ)言,在使用Swift時(shí)我們已經(jīng)充分享受到了面向協(xié)議編程帶給我們的便利,但是Swift相比Obj-C還有一個(gè)更重要的優(yōu)點(diǎn),那就是對(duì)函數(shù)式編程提供了很好的支持,其中Swift提供了map,filter,reduce這三個(gè)高階函數(shù)Higher Order function作為對(duì)容器的支持
    2017-12-12
  • 詳解iOS中多倒計(jì)時(shí)場(chǎng)景的解決方案

    詳解iOS中多倒計(jì)時(shí)場(chǎng)景的解決方案

    在我們開(kāi)發(fā)APP的過(guò)程中,或多或少都遇到過(guò)需要使用倒計(jì)時(shí)的場(chǎng)景,這篇文章主要介紹了詳解iOS中多倒計(jì)時(shí)場(chǎng)景的解決方案,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • iOS中NSThread使用示例詳解

    iOS中NSThread使用示例詳解

    這篇文章主要為大家介紹了iOS中NSThread使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10

最新評(píng)論