UIStatusBarStyle이 Swift에서 작동하지 않습니다.
Swift 앱의 상태 표시 줄 색상을 흰색으로 변경하려고하는데 벽돌 벽에 부딪 혔습니다. NavigationController에 각각 포함 된 3 개의 ViewController가 있습니다 (문제가 될 수 있습니까? 이미 NavigationController 클래스에 코드를 배치하려고했습니다.) AppDelegate의 didFinishLaunchingWithOptions에서 다음 코드를 모두 시도했습니다. .swift 파일이지만 둘 다 작동하지 않았습니다.
application.statusBarStyle = .LightContent
과
UIApplication.sharedApplication().statusBarStyle = .LightContent
문서가 그것에 대해 말해야 할 것은 UIBarButtonStyle이 Int이며 암시 적으로 전혀 도움이되지 않은이 열거 형 스 니펫을 제공했다는 것입니다.
enum UIStatusBarStyle : Int {
case Default
case LightContent
case BlackOpaque
}
내가 무엇을 놓치고 있습니까?
두 가지 옵션이 있습니다.
상태 표시 줄의 스타일을 계속 수동으로 설정하려면 수행중인 작업을 계속하되 값이 .plist 파일 인 다음 키를 info.plist 파일에 추가해야합니다 NO
.
컨트롤러 기반 상태 표시 줄 모양보기
또는 애플리케이션의 statusBarStyle을 설정하는 대신보기 컨트롤러 기반 상태 표시 줄 모양을 계속 사용하려면 preferredStatusBarStyle
상태 표시 줄 스타일을 지정하려는 각보기 컨트롤러 의 속성을 재정의합니다 .
스위프트 3
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
스위프트 2
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return UIStatusBarStyle.LightContent
}
스위프트 3.0
AppDelegate.swift에서 didFinishLaunchingWithOptions
UIApplication.shared.statusBarStyle = .lightContent
Info.plist
View controller-based status bar appearance -> NO
스위프트 2.2
AppDelegate.swift에서 didFinishLaunchingWithOptions
UIApplication.sharedApplication().statusBarStyle = .LightContent
Info.plist
View controller-based status bar appearance -> NO
다음을 설정해야합니다.
navigationController.navigationBar.barStyle = .black
텍스트는 흰색으로 표시됩니다.
iOS9.x 및 Xcode7의 경우 다음 안에 넣으십시오 AppDelegate.swift
.
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
UINavigationBar.appearance().barStyle = .Black
}
This will automatically turn your status bar's style to .Lightcontent
for all the view controllers inside a UINavigationController.
(Also, delete View controller-based status bar appearance
from Info.plist to suppress the warnings you're probably seeing too!)
In Swift 3, status bar style has changed to a computed property in UIViewController that you can override like this:
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent //or default
}
On iOS 9 the following (setStatusBarStyle) is deprecated and you will get a warning if you go that way.
UIApplication.sharedApplication().setStatusBarStyle(UIStatusBarStyle.LightContent, animated: true)
If you want all statusBars changed in a single shot try adding the following to your Info.plist. This will also make your launch-screen status bar white. While the code above won't.
<key>UIStatusBarStyle</key>
<string>UIStatusBarStyleLightContent</string>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
for me all above dind't work until i add:
self.navigationController?.navigationBar.barStyle = .black;
so:
- Set
UIViewControllerBasedStatusBarAppearance
toYES
in.plist
- In
viewDidLoad
callself.setNeedsStatusBarAppearanceUpdate();
- Override preferredStatusBarStyle
override var preferredStatusBarStyle: UIStatusBarStyle { return .lightContent }
- In overrided method i set also the
navigationBar.barStyle
so final
for light content:
override var preferredStatusBarStyle: UIStatusBarStyle { self.navigationController?.navigationBar.barStyle = .black;//or default return .lightContent //or default }
and for black content use default
The source from here and here.
and if this doesn't work you can try add a UINavigationController
extension
:
extension UINavigationController
{
override open var preferredStatusBarStyle: UIStatusBarStyle {
if let lastVC = self.viewControllers.last
{
return lastVC.preferredStatusBarStyle
}
return .default
}
}
Strange, using Swift 3.1 & XC8.2.1, but all of the above didn't work.
What I did, is just
extension UINavigationController
{
override open var preferredStatusBarStyle: UIStatusBarStyle {
get {
return .lightContent
}
}
}
No Plist, no other stuff. HTH
In Swift 3.0 you can override a getter in ViewController for View controller-based status bar appearance:
override var preferredStatusBarStyle: UIStatusBarStyle {
get { return .lightContent }
}
Don't edit your Info.plist. Add this to your ViewController.swift:
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return UIStatusBarStyle.LightContent
}
Step 1. Add to info.plist View controller-based status bar appearance -> NO
Step 2. Add code in method where you need to change status bar color:
UIApplication.shared.statusBarStyle = .lightContent //(or .default)
setNeedsStatusBarAppearanceUpdate()
Key line of code: setNeedsStatusBarAppearanceUpdate()
참고URL : https://stackoverflow.com/questions/24235401/uistatusbarstyle-not-working-in-swift
'programing' 카테고리의 다른 글
MySQL 데이터베이스가 XAMPP Manager-osx에서 시작되지 않습니다. (0) | 2020.09.17 |
---|---|
문자열이 html인지 확인 (0) | 2020.09.17 |
숫자를 가장 가까운 10으로 반올림하는 방법은 무엇입니까? (0) | 2020.09.17 |
Codeigniter-지정된 입력 파일 없음 (0) | 2020.09.17 |
알파벳 문자 배열 생성 (0) | 2020.09.17 |