UIStatusBarStyle이 Swift에서 작동하지 않음
Swift 앱에서 상태 표시줄 색을 흰색으로 변경하려고 하지만 벽돌 벽에 부딪히고 있습니다.각각 내비게이션 컨트롤러에 내장된 View 컨트롤러가 3개 있습니다(문제가 될 수 있습니까?)이미 Navigation Controller 클래스에 코드를 배치하려고 했습니다.)나는 내 AppDelegate.swift 파일의 didFinishLaunchingWithOptions에서 다음 코드를 모두 시도했지만 둘 다 작동하지 않았습니다.
application.statusBarStyle = .LightContent
그리고.
UIApplication.sharedApplication().statusBarStyle = .LightContent
문서들이 그것에 대해 말하는 것은 UIBarButtonStyle이 Int이고 저에게 이 열거형 스니펫을 줬다는 것입니다. 이 스니펫은 제가 실험하는 데 전혀 도움이 되지 않았습니다.
enum UIStatusBarStyle : Int {
case Default
case LightContent
case BlackOpaque
}
제가 무엇을 빠뜨리고 있나요?
두 가지 옵션이 있습니다.
상태 표시줄의 스타일을 수동으로 계속 설정하려면 현재 작업을 계속하십시오. 그러나 다음 키를 info.plist 파일에 값이 다음과 같이 추가해야 합니다.NO
.
컨트롤러 기반 상태 표시줄 모양 보기
또는 응용프로그램의 statusBarStyle을 설정하는 대신 뷰 컨트롤러 기반 상태 표시줄 모양을 계속 사용하려면preferredStatusBarStyle
상태 표시줄 스타일을 지정할 각 뷰 컨트롤러의 속성을 선택합니다.
스위프트 3
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
스위프트 2
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return UIStatusBarStyle.LightContent
}
스위프트 3.0
AppDelegate.swift에서 옵션으로 실행 완료
UIApplication.shared.statusBarStyle = .lightContent
정보.plist
View controller-based status bar appearance -> NO
스위프트 2.2
AppDelegate.swift에서 옵션으로 실행 완료
UIApplication.sharedApplication().statusBarStyle = .LightContent
정보.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
UIN 탐색 컨트롤러 내의 모든 보기 컨트롤러에 적용됩니다.
(또한 삭제)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)
모든 상태바를 한 번에 변경하려면 Info.plist에 다음을 추가해 보십시오.그러면 시작 화면 상태 표시줄도 흰색으로 바뀝니다.하지만 위의 코드는 그렇지 않습니다.
<key>UIStatusBarStyle</key>
<string>UIStatusBarStyleLightContent</string>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
나를 위해 위의 모든 사람들은 내가 다음을 추가하기 전까지는 일하지 않습니다:
self.navigationController?.navigationBar.barStyle = .black;
그래서:
- 세트
UIViewControllerBasedStatusBarAppearance
로.YES
에.plist
viewDidLoad
을 부르다self.setNeedsStatusBarAppearanceUpdate();
- 상태 표시줄 스타일 재정의
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
}
}
Swift 3.1과 XC8.2.1을 사용하는 것은 이상하지만 위의 모든 것이 작동하지 않았습니다.
내가 한 일은 단지
extension UINavigationController
{
override open var preferredStatusBarStyle: UIStatusBarStyle {
get {
return .lightContent
}
}
}
플리스트도 없고, 다른 것도 없어요. HTH.
Swift 3.0에서는 View Controller for View 컨트롤러 기반 상태 표시줄 모양에서 getter를 재정의할 수 있습니다.
override var preferredStatusBarStyle: UIStatusBarStyle {
get { return .lightContent }
}
Info.plist를 편집하지 마십시오.ViewController.swift에 추가합니다.
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return UIStatusBarStyle.LightContent
}
info 1에 .info.plist에 추가View controller-based status bar appearance -> NO
2단계. 상태 표시줄 색을 변경해야 하는 방법에 코드를 추가합니다.
UIApplication.shared.statusBarStyle = .lightContent //(or .default)
setNeedsStatusBarAppearanceUpdate()
: 주요코드라인:setNeedsStatusBarAppearanceUpdate()
언급URL : https://stackoverflow.com/questions/24235401/uistatusbarstyle-not-working-in-swift
'programing' 카테고리의 다른 글
okhttp3 mockserver java.dll.NoClassDefFoundError: okhttp3/내부/동시/TaskRunner$RealBackend (0) | 2023.08.17 |
---|---|
PHP Symfony 4에서 POST 글로벌 변수를 가져오는 방법은 무엇입니까? (0) | 2023.08.17 |
Iframe 없이 외부 페이지를 포함하시겠습니까? (0) | 2023.08.17 |
jquery를 사용하여 드롭다운에서 첫 번째 요소를 선택하는 방법은 무엇입니까? (0) | 2023.08.17 |
event.preventDefault()(jQuery 사용)를 호출하는 수신기의 바인딩을 해제하는 방법은 무엇입니까? (0) | 2023.08.17 |