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
}
그러면 .Lightcontent
UINavigationController 내부의 모든 뷰 컨트롤러 에 대해 상태 표시 줄의 스타일이 자동으로 바뀝니다 .
(또한 View controller-based status bar appearance
Info.plist 에서 삭제 하여 아마도 표시되는 경고를 억제하십시오!)
답변
Swift 3에서 상태 표시 줄 스타일은 다음과 같이 재정의 할 수있는 UIViewController의 계산 된 속성으로 변경되었습니다.
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent //or default
}
답변
iOS 9에서는 다음 (setStatusBarStyle)이 더 이상 사용되지 않으며 그렇게하면 경고가 표시됩니다.
UIApplication.sharedApplication().setStatusBarStyle(UIStatusBarStyle.LightContent, animated: true)
한 번에 모든 statusBar를 변경하려면 Info.plist에 다음을 추가해보십시오. 그러면 시작 화면 상태 표시 줄도 흰색으로 바뀝니다. 위의 코드는 그렇지 않습니다.
<key>UIStatusBarStyle</key>
<string>UIStatusBarStyleLightContent</string>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
답변
위의 모든 dind는 내가 추가 할 때까지 작동하지 않습니다.
self.navigationController?.navigationBar.barStyle = .black;
그래서:
- 설정
UIViewControllerBasedStatusBarAppearance
에YES
의.plist
- 에서
viewDidLoad
호출self.setNeedsStatusBarAppearanceUpdate();
- preferredStatusBarStyle 재정의
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
} - 재정의 된 방법에서 나는 가벼운 내용에 대해
navigationBar.barStyle
최종적으로
설정 했습니다. 검은 내용의 경우 기본값을 사용하십시오.
override var preferredStatusBarStyle: UIStatusBarStyle {
self.navigationController?.navigationBar.barStyle = .black;//or default
return .lightContent //or default
}
이것이 작동하지 않으면 다음을 추가 할 수 있습니다 UINavigationController
extension
.
extension UINavigationController
{
override open var preferredStatusBarStyle: UIStatusBarStyle {
if let lastVC = self.viewControllers.last
{
return lastVC.preferredStatusBarStyle
}
return .default
}
}