IOS 知識小集(Status Bar變換)
背景
iOS 中經常會有需要在某個介面改變狀態列顏色或者某個介面隱藏狀態列的需求。而改變狀態列顏色和控制狀態列顯示和隱藏的API,在iOS 的不同版本中也發生了很多變化。
iOS 7以前
在iOS 7之前,狀態列是不佔檢視位置的。每個控制器中的根view都是從螢幕的Y軸20px處開始顯示的。所以那個時候整個app狀態列的風格,一般只在plist檔案裡設定【對應於General中的Status Bar Style】。印象裡似乎只有黑白兩種風格,已記不清了!
iOS 7以前狀態列設定
從API來看,那時候也是支援在程式碼裡修改狀態列的樣式以及顯示和隱藏的。只是因為狀態列對整個APP的影響不大,所以一般在plist裡設定好後,用不著再去修改了。
API
iOS 7 ~iOS 9
從iOS 7開始系統風格大變樣,圖示扁平了,狀態列也不在鬧獨立了。因為狀態列的會受到導航欄或者View背景色的影響,所以狀態列的風格也需要實時調整了。
想要改變狀態列的樣式,想要控制狀態列的顯示與隱藏,該怎麼做呢?
1. 用UIApplication的API
首先,需要在plist檔案裡將【View controller-based status bar appearance】設定為NO,因為它的預設值是YES,然後就可以利用UIApplication 來設定了。
plist設定
先上效果動畫:
再上原始碼:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
- (IBAction)changeStatus:(UISegmentedControl *)sender {
if (sender.selectedSegmentIndex == 0) {
// [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault]; // 帶動畫效果,動畫效果其實就是變換的時間變慢了
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault animated:YES];
} else {
// [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
// 帶動畫效果,動畫效果其實就是變換的時間變慢了
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent animated:YES];
}
}
- (IBAction)showOrHidden:(UISegmentedControl *)sender {
if (sender.selectedSegmentIndex == 0) {
// 第二個引數是個列舉型別
[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationSlide];
// 不帶動畫效果
// [[UIApplication sharedApplication] setStatusBarHidden:NO];
} else {
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];
// 不帶動畫效果
// [[UIApplication sharedApplication] setStatusBarHidden:YES];
}
}
|
2. 重寫ViewController方法
首先,要確保plist檔案中【View controller-based status bar appearance】為YES,沒有新增這個key的時候,預設是YES。
plist設定
然後在檢視控制器中,重寫如下三個方法即可:
要重寫的方法
因為這三個方法都有預設值,如果我們要的狀體欄樣式什麼的跟預設值效果一致,則不需要重寫;如果不想要預設的效果,則直接在這三個方法裡return 相應的值即可。你不必三個方法都重寫,看實際情況。例如,我想要在這個介面時狀態列為白色,狀態列不隱藏,那麼我只用重寫-preferredStatusBarStyle,like this:
1 2 3 4 |
相關推薦IOS 知識小集(Status Bar變換)背景 iOS 中經常會有需要在某個介面改變狀態列顏色或者某個介面隱藏狀態列的需求。而改變狀態列顏色和控制狀態列顯示和隱藏的API,在iOS 的不同版本中也發生了很多變化。 iOS 7以前 在iOS 7之前,狀態列是不佔檢視位置的。每個控制器中的根vi 「 iOS知識小集 」2018 · 第 38 期原文連結 更新:前兩週我們發了一條小集《Xcode 10.1 並沒有修復由於 Assets 引起的在 iOS 9 上的崩潰問題》,根據最新訊息,蘋果已經在伺服器端解決了這個問題,開發者通過 Xcode 10.1 打的 ipa 包在上傳到蘋果後臺,蘋果在處理包的過程中會自動修復。小夥伴們已親自驗證,不會 「 iOS知識小集 」2018 · 第 39 期原文連結 上週公眾號釋出的以下文章: iOS 元件化 —— 路由設計思路分析 Xcode 10.1 新特性概覽 效能之殤(一)-- 天才馮·諾依曼與馮·諾伊曼瓶頸 90% 以上的獨立開發者,敗在了認知環節 本期知識小集的主要內容包括: 忘記 AppleID 賬號安全問題的解 「 iOS知識小集 」2018 · 第 40 期原文連結 在過去的一週,Google 在 Flutter Live 2018 上正式釋出了 Flutter 1.0。這也意味 Flutter 步入正軌,我們可以更多地去嘗試這門技術。關於 Flutter 1.0 更多的資訊,可以檢視 Flutter 1.0 正式版: Google 的便攜 UI 工具包 「 iOS知識小集 」2018 · 第 42 期原文連結 上週公眾號釋出的以下文章: 一些 RxSwift 思考題 CocoaPods 都做了什麼? 初步探索LaunchScreen 使用 Metal 和 Core ML 評價照片質量 本期知識小集的主要內容包括: 使用 Named UIColor Diff:/Pod iOS知識小集 第三期這一期主要有三個內容: Tint Color Build Configurations in Swift 鍵盤事件 Tint Color 在iOS 7後,UIView新增加了一個tintColor屬性,這個屬性定義了一個非預設的著色顏色值 老司機週報x知識小集xSwiftGG:iOS 內推職位召集最近很多公司的裁員的訊息相信大家都有所耳聞,與此同時也有不少公司逆勢而上在持續招聘技術人員。因此我們三大組織決定牽頭收集一些可靠的招聘,元旦結束後在我們的資訊釋出渠道上釋出 iOS 內推職位專題文章。 職位要求 一條基本原則是:職位必須有吸引力。一個平庸沒競爭力的崗位就不要發上來了。所以務必在職位介紹中讓 web前端知識小筆記(二)jquery getview 例如 get del tar and 條件語句 arguments 1.if條件語句相關 對於 if 語句括號裏的表達式,ECMAScript 會自動調用 Boolean()轉型函數將這個表達式的結果轉換成一個布爾值。如果值為 true,執行 iOS 大批量彈幕小論(粒子彈幕)etime 朋友 ios 模式 任務 監測 strong nts tab 一、現狀 如今直播類、視頻播放器等基本都有彈幕模式。 為了保持性能和內存可控,基本是在初始化的時候生成一個Pool(Pool的容量是設定好的), 也就是利用重用機制(可以想象一下UITableView IQKeyboardManager 狀態欄(status bar)問題shared hack inset control gin begin available ear 說明 因為懶,所以具體什麽樣子,參考下面的鏈接 具體的問題情況參考:StatusBar background problem #1158 我解決的思路很簡單,就是在監 ios中改變程式的status bar有兩種: 一、在- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions方法中新增 [UIApplication css3的一個小demo(箭頭hover變化)rotate osi ping align pos ref block translate -m 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta char js基礎知識第二天(邏輯運算符)tex 2個 cnblogs text 黑白 javascrip 簡單 data- log 今天學習了2個知識點,數據類型轉換,邏輯運算符。這個2個知識點比較簡單,會用就可以。 邏輯運算符 邏輯運算只有2個幾個,一個為true,一個為false 且&& IOS 自定義按鈕(代碼實現)+九宮格uifont 排列 end uiview height iyu void rec name 在一些下載應用裏整個頁面都是按鈕,有好多好多,但是仔細觀察不難發現他們很有規律。就像下面一樣?? 很有規律的排列在屏幕上,那麽這需要我們怎麽去做能。 正如標題,我們需要了解兩個知 IOS 應用跳轉 (IOS9白名單)tom super created reat 獲取 import 字符 ges ict 跳轉到指定app的實現 IOS中應用的跳轉是通過URL實現的,因此在實現應用跳轉之前我們要設置一下對應的URL。 圖一(尋找配置軟件的URL) 圖二(具體配置選項) 註意: 如果IO Filebeat 關鍵字多行匹配日誌采集(multiline與include_lines)filebeat 關鍵字多行匹配日誌采集(multiline與include_lines)很多同事認為filebeat采集日誌不能做到多行處理,今天這裏討論下filebeat的multiline與include_lines。 先來個案例,以下日誌,我們只要求采集error的字段,2017/06/22 11:2 python簡單小程序(99乘法表)while 解釋 兩個 位與 顯示 con pri 數字 i+1 1. #99乘法表#第一種 for i in range(1,10): s=‘‘ for j in range (1,i+1): s+=str(j)+‘*‘+str(i)+‘ (轉)View Transform(視圖變換)詳解camera 1.0 posit 朝向 復制 3d圖 過程 product 變量 原文作者講得太好了,唯有這篇讓我對視圖矩陣了解的清晰了很多。 ---------------------------------------------------------------- vue 實現 ios 原生picker 效果(實現思路分析)sta 效果 cursor touchend orm dex tex sub alt 以前最早實現了一個類似的時間選擇插件,但是適用範圍太窄,索性最近要把這個實現方式發布出來,就重寫了一個高復用的vue組件。 支持安卓4.0以上,safari 7以上 效果預覽 gitHu Knight Tournament 偽並查集(區間合並)rst hat put cif after line spec class std Knight Tournament Hooray! Berl II, the king of Berland is making a knight tournament. The kin |