關於 Swift 中重寫 preferredStatusBarStyle 不起作用問題解決方案
前言:本次使用的
Swift
版本為4.2
版本,所以程式碼上與之前版本的寫法會有不一樣的地方, 但思路都如此。那我就根據自己的專案簡單說下解決辦法, 又更好辦法的, 也請大牛留言探討, O(∩_∩)O謝謝!
分析:
- 在
iOS9
之前使用UIApplication.shared.statusBarStyle = .lightContent
可以更改狀態列的前景顏色, 但也改變了全域性的, 所以在iOS9
之後蘋果推薦使用preferredStatusBarStyle
在對應的UIViewController
中靈活改變狀態列前景色, 但總會遇到重寫完了不管用的結果, 也是讓人很鬱悶。
步驟:
- 首先需要在專案 targets 中的
info.plist
檔案中將View controller-based status bar appearance
設定為NO
; - 如果
UIViewController
是存在於自定義的UINavigationController
中,需要在自定義的UINavigationController
中重寫childForStatusBarHidden
和childForStatusBarStyle
兩個方法:
為什麼要重寫這個東西呢?
因為這兩個方法預設返回值是
nil
。也就是當我們呼叫
setNeedsStatusBarAppearanceUpdate
的時候,系統會呼叫Container
(容器控制器)的preferredStatusBarStyle
這個方法(window?.rootViewController
的preferred
的方法,一般我們用UINavigationController
或者UITabBarController
來做Container
),也就是根本不會呼叫子控制器(我們所看到的UIViewcontroller
)的preferredStatusBarStyle
方法。
這個時候childForStatusBarHidden
和childForStatusBarStyle
兩個方法就派上用場了。
// 重寫這兩個方法
override var childForStatusBarHidden: UIViewController? {
return self.topViewController
}
override var childForStatusBarStyle: UIViewController? {
return self.topViewController
}
- 最後在需要改變狀態列顏色的
UIViewController
中重寫preferredStatusBarStyle
方法:
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
相關推薦
關於 Swift 中重寫 preferredStatusBarStyle 不起作用問題解決方案
前言:本次使用的 Swift 版本為 4.2 版本,所以程式碼上與之前版本的寫法會有不一樣的地方, 但思路都如此。那我就根據自己的專案簡單說下解決辦法, 又更好辦法的, 也請大牛留言探討, O(∩_∩)O謝謝! 分析: 在 iOS9 之前使用
Struts2中JSTL標籤不起作用解決辦法
1.設定某個jsp頁面使用el表示式,需要在jsp頁面加上(控制單個頁面) <%@ page isELIgnored="false"%> //我設定了這點就可以了, 2.看你的web.xml檔案中頭的引用應該是 2.4.xsd <web-app id="WebApp_
Chrome瀏覽器中autocomplete="off"不起作用解決方案
統一 type toc 網上 word 清除 登錄 保存 input 多數瀏覽器默認會緩存input的值,只有使用ctl+F5強制刷新的才可以清除緩存記錄。 如果不想讓瀏覽器緩存input的值,有2種方法: 方法一: 在不想使用緩存的input中添加 autocompl
'autocomplete="off"'在Chrome中不起作用解決方案
最近專案中遇到一個令人頭疼的問題,查閱各種資料,嘗試各種方法,最終得以解決;哎···下面就說說這心酸的歷程吧。 大家都知道autocomplete屬性是表單欄位中的HTML5新屬性,該屬性有兩種狀態值,分別為"on" 和 "off",該屬性可省略:省略屬性值後預設值為"
servlet3.0註解loadOnStartup不起作用解決方案
color fig 運行 exc back tar med -c spa 多次嘗試3.0在源碼中直接用註解配置loadOnStartup=1,即web應用啟動時創建servlet實例,發現不起作用,但是在web.xml配置則可以正常運行。先上源碼。 package l
手機端input[type=date]的時候placeholder不起作用解決方案
手機端input[type=date]的時候placeholder不起作用解決方案 目前PC端對input 的date型別支援不好,我試下來的結果是隻有chrome支援。firefox、IE11 都不支援。而且PC端有很多日曆控制元件可供使用。就不去多考慮這點了。 那麼在移動端
Git忽略檔案不起作用解決方案
開發過程中由開發工具生成的檔案一般不需要提交,但每次開發工具會自動去修改這些檔案,每次都要去提交這些東西,不提交會有一系列問題,很煩人。 可以通過配置.gitignore檔案讓git不在跟蹤記錄這些檔案。心血來潮去配置的時候,發現配
web.xml error-page 不起作用解決方案
今天遇到一個問題(應該是個老問題,但網上答案各異),記錄下來 在web.xml中配置錯誤頁面跳轉如下: <error-page> <exception-type>java.lang.Exception</exception-type>
springmvc mybatis 註解的方式 事務不起作用解決方案
1、使用springmvc導致事務不起作用時,首先檢視是否元件重複掃描問題導致 由於採用的是SpringMVC、 MyBatis,故統一採用了標註來宣告Service、Controller。伺服器啟動時的載入配置檔案的順序為web.xml---root-con
autocomplete="off" 不起作用解決方案
autocomplete屬性是表單欄位中的HTML5新屬性,該屬性有兩種狀態值,分別為"on" 和 "off",該屬性可省略:省略
解決ScrollView滑動過程中ScrollTo()方法不起作用的問題
原文 本篇文章作為新的類別 “Android經驗之談” 開篇之作,記錄實際開發中遇到的比較“奇怪”的問題以及解決方案,不求長篇大論,但求短小精悍,一兩句話講明問題及解決方案,畫龍點睛,一語道破天機。 有時候,一句提醒,能讓人豁然開朗,少走很多彎路。 案例:閱讀軟
iOS Git建立gitignore檔案, gitignore 不起作用解決辦法
1.建立gitignore檔案 開啟終端, cd 進入到專案所在目錄,輸入touch gitignore即可, 然後編輯 gitignore, 編輯成功之後, mv gitignore .gitignore換名字, 這個時候.gitignore檔案會自動消失, 點檔案不能顯示的. 在該資料夾下打
Shiro unauthorizedUrl 不起作用解決方法
Shiro 通過註解方式判斷當前使用者沒有許可權時,跳轉不到指定的錯誤頁面,就是因為 unauthorizedUrl 不起作用,解決方法就是在 shiro 配置中加上下面這一段配置(異常全路徑做key,錯誤頁面做value) <bean class="org.springfram
微信小程式設定height 100% 不起作用解決辦法
https://blog.csdn.net/wshpwangshiyu/article/details/79744884 問題:微信小程式設定背景圖片高度適應整個螢幕,設定height 100% 不起作用? .container-all{ width: 100%; he
JSP中EL表示式不起作用
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
BrowserSync的大坑,監聽不起作用解決辦法,附gulp瀏覽器同步自動重新整理部署方法
能將本地伺服器代理到localhost:3000/localhsot:3001的操作:按照官網來操作的程式碼是不起作用的:browser-sync start --proxy "127.0.0.1:8081" "E:/newcrm/trunk/4_Tools/crm/**/*.
Qt 佈局設定stretch,不起作用解決方法
addWidget(QWidget *widget, int stretch = 0, Qt::Alignment alignment = Qt::Alignment()) insertStretch(int index, int stretch = 0) setStretchFactor(
jsp中EL表示式不起作用的問題
SpringMVC過程中出現異常,開發環境如下: 開發工具:IDEA JDK:1.8.0_65 Spring Version:4.2.4 Servlet Version:3.1.0 Maven:3.3.0 問題:在jsp頁面中使用el表示式
SpringMVC的JSP頁面中中EL表示式不起作用${}
解決方法: 在使用el表示式的jsp中配置: <%@page isELIgnored=”false” %> 該設定代表在本jsp中使用el表示式,可以解析其中的值。若isELIgno
View控制元件中android:drawablePadding不起作用的原因探究
我們在使用android:drawablePadding的時候,經常會出現設定了以後會不起作用,先來看一下程式碼:<?xml version="1.0" encoding="UTF-8"?>