programing

iOS에서 상태 표시줄 텍스트 색상을 변경하는 방법

codeshow 2023. 4. 12. 22:43
반응형

iOS에서 상태 표시줄 텍스트 색상을 변경하는 방법

앱의 배경이 어둡지만 iOS 7에서는 상태 표시줄이 투명해졌습니다.그래서 구석에 녹색 배터리 표시등만 보이고 아무것도 안 보여요.홈 화면에서처럼 상태 표시줄 텍스트 색상을 흰색으로 변경하려면 어떻게 해야 합니까?

  1. 를 합니다.UIViewControllerBasedStatusBarAppearance로로 합니다.YES파일에 .plist를 하다

  2. 서서 viewDidLoad을 추다[self setNeedsStatusBarAppearanceUpdate];

  3. 다음 방법을 추가합니다.

    - (UIStatusBarStyle)preferredStatusBarStyle
    { 
        return UIStatusBarStyleLightContent; 
    }
    

주의: 내부 컨트롤러에서는 작동하지 않습니다.UINavigationController아래 Tyson의 코멘트를 참조해 주세요.

Swift 3 - 내부 컨트롤러가 작동합니다.UINavigationController이 코드를 컨트롤러 내부에 추가합니다.

// Preferred status bar style lightContent to use on dark background.
// Swift 3
override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
}

스위프트 5 및 스위프트UI

SwiftSwift경우 UI라는 새로운 스위프트파일을 만듭니다.HostingController.swift

import Foundation
import UIKit
import SwiftUI

class HostingController: UIHostingController<ContentView> {
    override var preferredStatusBarStyle: UIStatusBarStyle {
        return .lightContent
    }
}

'다 하다'에서 .SceneDelegate.swift

window.rootViewController = UIHostingController(rootView: ContentView())

로.

window.rootViewController = HostingController(rootView: ContentView())

또는 뷰 컨트롤러 기반 상태 표시줄 모양에서 제외할 수 있습니다.

  1. ★★View controller-based status bar appearance로로 합니다.NO 안에서Info.plist.
  2. ★★[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

주의: 이 방법은 iOS9에서 더 이상 사용되지 않습니다.preferredStatusBarStyle대신 UIViewController로 이동합니다.(Apple Developer Library 참조)

코드 한 줄 쓰지 않고도 이 작업을 수행할 수 있어요!
상태 표시줄 텍스트를 전체 앱에서 흰색으로 설정하려면 다음을 수행합니다.

프로젝트 플리스트 파일:

  • 바 스타일: " " " " " " " :Transparent black style (alpha of 0.5)
  • 외관을 표시합니다.「 」 。NO
  • 있습니다.「 」 「 」NO

주의: iOS 7/8에서는 가장 높은 표를 얻은 답변이 작동하지 않습니다.

Info.plist에서 '컨트롤러 기반 상태 표시줄 표시 보기'를 아니요로 설정합니다.

AppDelegate에서 추가

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

로.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
   ...
}    

이 솔루션은 iOS 7/8에서 작동합니다.

다른 답변(및 다른 소스/문서)을 모두 사용해도 아무 일도 일어나지 않았습니다.XIB에서 탐색 모음 스타일을 "검은색"으로 설정하는 것이 도움이 되었습니다.이로 인해 텍스트가 코드 없이 흰색으로 변경되었습니다.

여기에 이미지 설명을 입력하십시오.

그 중 어느 것도 제게는 효과가 없었습니다. 그래서 여기 효과적인 해결책이 있습니다.

»Info.plist행 , 행 추가: , , 행 추가.

UIViewControllerBasedStatusBarAppearanceNO.

다음 를 합니다.didFinishLaunchingWithOptions , 이합니다: , 으면 안 됩니다.

[application setStatusBarHidden:NO];
[application setStatusBarStyle:UIStatusBarStyleLightContent];

이 경우 코드를 수행할 필요가 없습니다.

다음과 같이 info.plist에 "View controller-based status bar apasure" 키를 추가해야 합니다.

값 유형을 Boolean으로 설정하고 값을 NO로 설정합니다.다음으로 프로젝트 설정을 클릭하여 [General]탭을 클릭하여 [Deployment Info]아래에서 우선 상태 바의 스타일을 [ ]으로 설정합니다.다음과 같이 점등:

여기에 이미지 설명 입력

바로 그거야.

다음 두 단계만 수행합니다.

순서 1:

[ [ ( Info ) ]의 [탭 아래project target행: , " " " :

UIViewControllerBasedStatusBarAppearance value , set value (설정값)NO.

순서 2:

★★★★★★★ ★★★AppDelegate.m:

- (BOOL)application:(UIApplication *)application 
        didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
    …
    [application setStatusBarStyle:UIStatusBarStyleLightContent];
    …
}

이 기능은 2013년 9월 18일에 출시된 Golden Master iOS 7 및 Xcode 5 GM 시드 및 iOS7 SDK에서 작동합니다(적어도 내비게이션 컨트롤러가 숨겨져 있음).

  1. ★★the UIViewControllerBasedStatusBarAppearance로로 합니다.NO Info.plist.

  2. »ViewDidLoadanywhere, 바스타일을 : " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " "[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

UIViewController가 UINavigationController 내부에 있는 경우 BarStyle을 설정해야 합니다.

-[UINavigationBar setBarStyle:UIBarStyleBlack]

원본 답변은 여기에 있습니다.

https://devforums.apple.com/message/844264#844264

Interface Builder를 통해 작성된 임베디드 내비게이션컨트롤러가 있는 경우 네비게이션컨트롤러를 관리하는 클래스에서 다음 설정을 해 주세요.

-(UIStatusBarStyle)preferredStatusBarStyle{ 
    return UIStatusBarStyleLightContent; 
} 

그걸로 충분할 거야

Swift 프로젝트에서 iOS 7 앱용으로 Xcode 6 베타 5를 사용하고 있습니다.

제가 한 일은 다음과 같습니다.

info.plist:

여기에 이미지 설명을 입력하십시오.

  1. ★★★★★★★★★★★★★★★로 이동Project->Target ,

  2. 으로 " " " 를 설정합니다.Status Bar Style로로 합니다.Light. 부팅 화면에서 상태 표시줄이 흰색으로 표시됩니다.프로젝트 설정

  3. 으로 " " " 를 설정합니다.View controller-based status bar appearance에 equal NOInfo.plist.

정보 PLIST 변경 Swift3는 2단계만으로 매우 쉽다.info.plist로 이동하여 키를 변경합니다.View controller-based status bar appearance로 합니다.아니요, 아니다. 다음 이을 didfinishlaunch options 합니다.Appdelegate 이fin then 、 didfinishlaunching with options 。

  func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.
        UIApplication.shared.statusBarStyle = .lightContent
        return true
    }

이것은 iOS9에서 폐지되었습니다.이제 루트뷰 컨트롤러에서 이 속성을 덮어써야 합니다.

이것은 iOS 9에서 권장되지 않습니다.루트 뷰 컨트롤러에서 해야 합니다.

override var preferredStatusBarStyle: UIStatusBarStyle {
        return .lightContent
 }

AppDelegate.m에서 다음을 추가합니다.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

} 

또한 Plist 파일에서 'View controller-based status bar apasure'를 NO로 설정합니다.

Simply In App 대리자:

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

Swift 5 에서는, 다음의 순서에 따릅니다.

  1. 추가 ★★UIViewControllerBasedStatusBarAppearance을 ★★★★★★★★★★★★★★로 설정합니다.false Info.plist 서 in in
  2. 추가 ★★UIStatusBarStyle을 ★★★★★★★★★★★★★★로 설정합니다.UIStatusBarStyleLightContent

나한테는 식은 죽 먹기야

의 ★★★★★★★★★★★★★★★★★★★★★★★★★info.plist.

  1. ★★View controller-based status bar appearance로로 합니다.NO
  2. ★★Status bar style로로 합니다.UIStatusBarStyleLightContent

그런 다음 앱 위임자에게 가서 다음 코드를 붙여 넣으십시오. 여기에 Windows의 RootViewController를 설정합니다.

#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v)  ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)

if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0"))
{
    UIView *view=[[UIView alloc] initWithFrame:CGRectMake(0, 0,320, 20)];
    view.backgroundColor=[UIColor colorWithRed:0/255.0 green:0/255.0 blue:0/255.0 alpha:1.0];
    [self.window.rootViewController.view addSubview:view];
}

빙고, 나한텐 효과가 있어

Xcode는 항상 이것을 바꾸는 것 같기 때문에 이것이 최신입니다.

2021년 현재 - Swift 5, Xcode 12

상태 표시줄을 흰색으로 변경하려면:

  1. Info.plist를 엽니다.
  2. 추가 ★★UIViewControllerBasedStatusBarAppearance을 ★★★★★★★★★★★★★★로 설정합니다.No(false). 수 있는 은 '이러한 버전'입니다."View controller-based status bar appearance".
  3. 추가 ★★UIStatusBarStyle을 ★★★★★★★★★★★★★★로 설정합니다.UIStatusBarStyleLightContent (예:)"Light Content"를 참조해 주세요.

iOS 7을 사용하면 Apple 개발자 설명서에 설명된 대로 개별 뷰 컨트롤러가 상태 표시줄의 모양을 확인할 수 있습니다.

은 뷰 가 앱할 수 기능을 합니다.OS 7은 뷰 컨트롤러가 앱 실행 중에 상태 표시줄의 스타일을 조정할 수 있는 기능을 제공합니다.상태 표시줄 스타일을 동적으로 변경하는 좋은 방법은 다음과 같습니다.preferredStatusBarStyle 「」를 호출합니다.setNeedsStatusBarAppearanceUpdate.

상태 표시줄 모양을 글로벌하게 설정하는 과정은 두 단계로 이루어집니다.

먼저 iOS에 상태 표시줄 모양을 뷰 바이 뷰로 설정하지 않겠다고 알려야 합니다.

그런 다음 실제로 새로운 글로벌 상태 표시줄 스타일을 설정해야 합니다.

뷰바 제어를 비활성화하려면 , 할 View controller-based status bar appearance합니다.Info.plist.

Project Navigator(프로젝트 탐색기)를 열고 iOS 앱용 프로젝트를 선택한 다음 Info(정보) 탭을 선택합니다.

줄 에 마우스를 올려 새 할 수 있는 합니다..plist.

「」라고 입력합니다.View controller-based status bar appearance[에서 [가 [Key]로 설정되어 합니다.Boolean 「 」라고 입력합니다.NO[Value] 필드에 입력합니다.

상태 표시줄에 대한 글로벌 스타일을 설정하려면 시 태 표 줄 역 형 가 합 음 니 하 보 른 to set] bar탭 ,정 of styleinfo(래 the추Status bar style, 유형, 타 입String및 의 치 and가 aOpaque black style.

다음은 자세한 내용과 샘플 코드를 기재한 블로그 게시물입니다.

http://codebleep.com/setting-the-status-bar-text-color-in-ios-7/

Xcode GM Seed에 대한 답변 업데이트:

  1. »Info.plist put 놓다View controller-based status bar appearance as ~하듯이NO

  2. 프로젝트에서 다음을 설정합니다.

    여기에 이미지 설명을 입력하십시오.

  3. ViewDidLoad:

    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

추가 작업은 필요 없습니다.이 코드를 뷰에 적어두면 됩니다.컨트롤러와 상태 바의 색상이 흰색으로 표시됩니다.

- (UIStatusBarStyle)preferredStatusBarStyle{return UIStatusBarStyleLightContent;}

이는 iOS 7 UI 전환 가이드에 설명되어 있습니다. 이 가이드에 직접 액세스하려면 Apple 개발자 ID가 필요합니다.관련 발췌:

상태 표시줄이 투명하기 때문에, [ 시 상 ] 표 보 명 해 표 기 because the] barrent있 it, through를 is use behind status뒤을(... transpa는)UIStatusBarStyle상태 표시줄 콘텐츠는 어둡거나 빛일 수 있는지 여부를 지정합니다. 용 둡 지 게 지 부 다 니 지 합 constant정 shouldbar be to or여를할밝 content할상

UIStatusBarStyleDefault는 어두운을 표시합니다 ]

UIStatusBarStyleLightContent, contentcontent.content.content.content.content.content.content.content.content상태 표시줄 뒤에 어두운 내용이 있을 때 사용합니다.

또, 다음과 같은 것도 생각할 수 있습니다.

7에서는 개별 하고 앱할 수 .iOS 7에서는 개별 vew 컨트롤러에서 상태 표시줄의 스타일을 제어하고 앱 실행 중에 변경할 수 있습니다.동작에 하려면 , 「」를 합니다.UIViewControllerBasedStatusBarAppearance★★에 키Info.plist 값을 YES.

Apple 개발자 ID로 액세스 할 수 있는 문서를 꼭 읽어보시길 권합니다.

모든 답변이 특정 시나리오에서 작동하기 때문에 실제로 문제를 지적하는 것은 아니라고 생각합니다.그러나 모든 사례를 다루어야 하는 경우 아래의 사항을 따르십시오.

상태 표시줄 라이트 스타일이 필요한 위치에 따라 다음 3가지 사항을 항상 염두에 두어야 합니다.

1) 기동 화면이나 다른 장소에서 상태 바가 필요한 경우(뷰 컨트롤러가 아닌 기동 화면과 같은 일부 시스템 제어 요소/순간) 프로젝트 설정으로 이동합니다.

2) 네비게이션 컨트롤러 내부에 컨트롤러가 있는 경우 인터페이스 빌더에서 다음과 같이 변경할 수 있습니다.

a) 내비게이션 컨트롤러의 내비게이션 바를 선택합니다.

b) 다음으로 네비게이션 바의 스타일을 "검은색"으로 설정합니다.이것은 상태 바 아래에 "검은색" -> 어두운 배경이 있음을 의미하기 때문에 상태 바는 흰색으로 설정됩니다.

여기에 이미지 설명 입력

또는 다음과 같이 코드로 수행합니다.

navigationController?.navigationBar.barStyle = UIBarStyle.Black

3) 자체 상태 표시줄 스타일을 가져야 하는 단독 컨트롤러가 있으며 UINavigation Controller로서 일부 컨테이너 구조에 내장되어 있지 않은 경우

컨트롤러의 코드에서 상태 표시줄 스타일을 설정합니다.

코드에서 상태 표시줄 스타일 설정

다음은 상태 표시줄 변경에 대한 Apple 지침/지침입니다.상태 표시줄에는 다크 & 라이트(중간 & 블랙)만 허용됩니다.

다음은 상태 표시줄 스타일을 변경하는 방법입니다.

스타일을 설정하는 은 '어플리케이션레벨'을 설정합니다.UIViewControllerBasedStatusBarAppearance로로 합니다.NO ...plist' pl pl pl pl pl pl pl pl pl pl

상태 표시줄 스타일을 설정하려면 뷰 컨트롤러 수준에서 다음 단계를 수행합니다.

  1. 를 합니다.UIViewControllerBasedStatusBarAppearance로로 합니다.YES .plist(UIView Controller)
  2. - viewDidLoad -setNeedsStatusBarAppearanceUpdate

  3. 뷰 컨트롤러에서 preferredStatusBarStyle을 덮어씁니다.

-

override func viewDidLoad() {
    super.viewDidLoad()
    self.setNeedsStatusBarAppearanceUpdate()
}

override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
}

상태 표시줄 스타일 설정 수준에 따라 .plist의 값을 설정합니다. 여기에 이미지 설명 입력


어플리케이션 기동 중 또는 뷰 컨트롤러의 viewDidLoad 중에 상태 바의 배경색을 변경/설정하기 위한 몇 가지 해박한 방법을 소개합니다.

extension UIApplication {

    var statusBarView: UIView? {
        return value(forKey: "statusBar") as? UIView
    }

}

// Set upon application launch, if you've application based status bar
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        UIApplication.shared.statusBarView?.backgroundColor = UIColor.red
        return true
    }
}


or 
// Set it from your view controller if you've view controller based statusbar
class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        UIApplication.shared.statusBarView?.backgroundColor = UIColor.red
    }

}



을 사용하다

여기에 이미지 설명 입력

전화만 하면 됩니다.

[[UINavigationBar appearance] setBarStyle:UIBarStyleBlack];

에서

-(BOOL)application:(UIApplication *)application 
           didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
}

my 의의의 방법AppDelegatei에서는 입니다.OS7 os os os os 。

Swift 5의 경우 다음 행을 추가했습니다.

override func viewDidAppear(_ animated: Bool) {
    navigationController?.navigationBar.barStyle = .black
}

override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
}

난 다른 일을 했고 나한테도 효과가 있어.

코드를 변경하지 않고 .plist 파일을 다음과 같이 설정했습니다.

  • 컨트롤러 기반 상태 표시줄 표시> NO
  • 상태 표시줄 style > UIStatus BarStyleLightContent (단순 문자열)

도움이 됐으면 좋겠어요.

편집하다

각 뷰 컨트롤러에 대해 스토리보드에 있는 "상태 표시줄"의 시뮬레이션 메트릭 속성을 "권장"에서 "경량 콘텐츠"로 변경합니다.

info.plist에서는 필드 값 NO View컨트롤러 기반의 상태 바아피아란스를 설정하고 target > general 설정으로 상태 바스타일의 라이트를 설정합니다.

입니다.Info.plist★★★★

View controller-based status bar appearanceNO

Status bar styleOpaque black style

또는 원시 키/값 목록이 있는 경우

UIViewControllerBasedStatusBarAppearanceNO

UIStatusBarStyleOpaque black style

Swift에서도 같은 결과를 얻으려면 AppDelegate.swift 파일에서 다음 코드를 사용할 수 있습니다.

UINavigationBar.appearance().barStyle = .BlackTranslucent

상태 바의 텍스트는 흰색으로 표시됩니다. :-!

언급URL : https://stackoverflow.com/questions/17678881/how-to-change-status-bar-text-color-in-ios

반응형