programing

UIStatusBarStyle이 Swift에서 작동하지 않음

lovejava 2023. 8. 17. 20:32

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

} 

상태 표시줄의 스타일이 자동으로 다음으로 바뀝니다..LightcontentUIN 탐색 컨트롤러 내의 모든 보기 컨트롤러에 적용됩니다.

(또한 삭제)View controller-based status bar appearanceInfo.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;

그래서:

  1. 세트UIViewControllerBasedStatusBarAppearance로.YES.plist
  2. viewDidLoad을 부르다self.setNeedsStatusBarAppearanceUpdate();
  3. 상태 표시줄 스타일 재정의
    override var preferredStatusBarStyle: UIStatusBarStyle { return .lightContent }
  4. 재정의된 방법에서 나는 또한 설정합니다.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