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


990

내 응용 프로그램은 어두운 배경이지만 iOS 7에서는 상태 표시 줄이 투명 해졌습니다. 그래서 구석에 녹색 배터리 표시기 만 표시됩니다. 홈 화면에서와 같이 상태 표시 줄 텍스트 색상을 흰색으로 변경하려면 어떻게해야합니까?


9
이 링크는이 문제에 대한 흥미로운 정보를 가지고 있습니다 : doubleencore.com/2013/09/…
Adriano Lucas

답변:


1380
  1. 설정 UIViewControllerBasedStatusBarAppearanceYES.plist 파일에.

  2. 에서 viewDidLoadDO A를[self setNeedsStatusBarAppearanceUpdate];

  3. 다음 방법을 추가하십시오.

    - (UIStatusBarStyle)preferredStatusBarStyle
    { 
        return UIStatusBarStyleLightContent; 
    }

참고 :이 내부 컨트롤러없는 작업을 수행 UINavigationController, 참조하시기 바랍니다 타이슨의 의견을 아래에 :)

스위프트 3- 컨트롤러 내부에서 작동 UINavigationController합니다. 이 코드를 컨트롤러 안에 추가하십시오.

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

스위프트 5와 스위프트 UI

SwiftUI의 경우라는 새 빠른 파일을 만듭니다. 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())

78
2 단계가 필요하지 않았습니다.
Jason Moore

37
Xcode5-DP5가 설치된 iOS 7 Beta 5에서 작동하지 않는 것 같습니다. preferredStatusBarStyle이 호출되지 않는 것 같습니다.
wilsontgh

18
UIViewControllerBasedStatusBarAppearance은 엑스 코드 5 GM 종자에보기 컨트롤러 기반 상태 표시 줄 모양으로 변경됩니다
parilogic

42
Xcode GM Seed에 대한 답을 얻었습니다. 1. Info.plist에서 View 컨트롤러 기반 상태 표시 줄 모양을 NO로 설정하십시오.
parilogic

101
UINavigationController 는 특별한 경우이며 위의 기능은 작동하지 않습니다. 이것에 대해 머리를 긁는 데 몇 시간을 보냈습니다. 해결책은 여기를 참조하십시오 : stackoverflow.com/a/19513714/505457
Tyson

848

또는 뷰 컨트롤러 기반 상태 표시 줄 모양을 선택 해제 할 수 있습니다.

  1. 설정 View controller-based status bar appearanceNOInfo.plist .
  2. 요구 [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

참고 :이 방법은 iOS9에서 더 이상 사용되지 않습니다. preferredStatusBarStyle대신 UIViewController를 사용하십시오 . ( Apple 개발자 라이브러리 참조 )


16
이것은 훨씬 좋고 쉬운 경로입니다.
Mick Byrne

227
코딩 할 필요가 없습니다. plist에서 모두 수행 할 수 있습니다. (1) "컨트롤러 기반 상태 표시 줄보기"를 NO로 설정하고 (2) "상태 표시 줄 스타일"을 "불투명 한 블랙 스타일"로 설정하십시오. (원시 값은 UIViewControllerBasedStatusBarAppearance-> NO 및 UIStatusBarStyle-> UIStatusBarStyleBlackOpaque입니다)
SwiftArchitect

3
이 점에 유의 해야한다 이 작업을 수행하려면 NO에 관련의 Info.plist 값을 설정합니다.
Abhi Beckert

9
@ gothicdev : 좋은 캐치. 가장 깨끗한 답변을 수락하십시오. 바 스타일의 조명 옵션은 다음과 같습니다. UIStatusBarStyleLightContent
benka

9
이 방법은 iOS 9에서 더 이상 사용되지 않습니다.
lostAtSeaJoshua

439

코드를 작성하지 않고도이 작업을 수행 할 수 있습니다!
전체 응용 프로그램에서 상태 표시 줄 텍스트를 흰색으로 만들려면 다음을 수행하십시오.

plist 파일 을 프로젝트 합니다.

  • 상태 표시 줄 스타일 : Transparent black style (alpha of 0.5)
  • 컨트롤러 기반 상태 표시 줄보기 : NO
  • 상태 표시 줄은 처음에 숨겨져 있습니다. NO

12
상황이 바뀌 었는지 모르겠지만 XStatus는 UIStatusBarStyleLightContent 값을 인식하지 못하며 문서에서 찾을 수 없습니다 ... 작동하는 것처럼 보입니다.
Nathan H

5
이것은 또한 스플래시 화면에서 변경되었지만 네비게이터에서 설정하는 것만으로는 ... Kudos!
viniciusnz

3
이 작업을 수행하는 가장 쉬운 방법은 물론 스플래시 화면에서도 작동합니다.
7wonders

4
HOWEVER UIStatusBarStyleLightContent에서 호출 되는 것은 없습니다 . 동일한 트릭을 수행 할 것입니다 :) 플러스, 원래 존재하지 않으므로 추가 해야하며 작동하기 위해 필요한 모든 것 :)plist infoTransparent BlackView controller-based status bar appearance
user1949873

45
나와 같은 게으른 사람들을 위해, 복사하고 과거 : <key>UIStatusBarStyle</key> <string>UIStatusBarStyleLightContent</string> <key>UIViewControllerBasedStatusBarAppearance</key> <false/>
Adam Waite

241

참고 : iOS 7/8에서는 가장 많이 답한 답변이 작동하지 않습니다.

Info.plist에서 '제어기 기반 상태 표시 줄보기'를 NO로 설정하십시오.

AppDelegate에서 추가

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

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

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


10
iOS 9에서 사용되지 않습니다. :-/
sudo make install

112

나에게 다른 대답 (및 다른 출처 / 문서)의 모든 것을 사용하는 것은 아무 일도 없었습니다. XIB에서 탐색 막대 스타일을 "검정색"으로 설정하는 것이 도움이되었습니다. 이것은 코드없이 텍스트를 흰색으로 바꿨습니다.

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


3
장치에서 위의 답변 중 어느 것도 나를 위해 효과가 없었습니다. 나는 새로운 시스템에 대해 navigation_bar 를 BLACK으로 설정 하여 status_bar 텍스트를 WHITE 로 설정해야한다고 생각합니다 .
MrTJ

2
많은 일을 겪고 난 후에, 이것이 작동하게 된 것입니다. 스타일이 기본값으로 설정되었습니다. 이것을 변경하고 다른 모든 상태 표시 줄 해킹을 제거하면 작동합니다.
구자민

1
IB에서 모든 탐색 모음을 설정하지 않으려는 경우 모양 프록시를 설정할 수도 있습니다. [[UINavigationBar 모양] setBarStyle : UIBarStyleBlack];
Steve Moser

3
iOS7 스토리 보드에서 작동하지 않습니다. 이것이 다른 부작용 OS 일 수 있습니까?
Chris

위의 모든 답변이 나에게 도움이되지 않았 음을 확인하고 싶습니다. 이미지 다음에 상태 표시 줄 텍스트가 흰색으로 보입니다. 그러나 다시 반복하지만 Xcode 6.2 및 iOS 8.2의 위의 답변은 작동하지 않습니다.
Markus

98

그 중 어느 것도 나를 위해 일하지 않았으므로 여기에 효과적인 해결책이 있습니다 ...

에서 Info.plist, 행을 추가 :

UIViewControllerBasedStatusBarAppearance값을 설정하십시오 NO.

그런 다음 AppDelegate in didFinishLaunchingWithOptions에서 다음 행을 추가하십시오.

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

이 솔루션은 저에게 효과적이지만 위의 솔루션은 효과가 없었습니다.
John Contarino

굉장하지만이 UIViewControllerBasedStatusBarAppearance 변환 동일한 : 컨트롤러 기반 상태 표시 줄 모양 자동으로보기 :)
Abhishek Thapliyal

63

이 코드를 작성하지 않아도됩니다

info.plist에 "컨트롤러 기반 상태 표시 줄보기"키를 다음과 같이 추가해야합니다. 여기에 이미지 설명을 입력하십시오

& 값 유형을 부울 & 값으로 설정하고 NO로 설정하십시오. 그런 다음 프로젝트 설정을 클릭 한 다음 일반 탭을 클릭하고 배포 정보 아래에서 기본 상태 표시 줄 스타일을 .Light로 설정하십시오.

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

그게 다야.


1
나는 당신의 접근 방식을 좋아했습니다! 필자의 경우 상태 표시 줄 스타일을 전체 화면 (탐색 모음 없음)으로 만 밝게 만드는 방법을 알아 내려고했습니다. 그런 다음 다른 모든 화면이 같은 조명 스타일에 맞아야한다는 것을 깨달았습니다. 따라서 좋은 해결책은 모든 것을 설정하는 것입니다. 감사! (:
Igor de Lorenzi

앱이 실행되는 동안이를 변경할 필요가없는 경우 이것이 가장 좋은 방법입니다.
Michael

이 방법은 확실히 작동하지만 iPad에서 이상한 문제가 발생합니다. 응용 프로그램이 딥 링크를 지원하고 딥 링크를 통해 응용 프로그램을 시작하면 상태 표시 줄에 나타나는 백 링크가 사라집니다.
Chitranshu Asthana

가장 좋고 가장 간단한 것.
Kumit Amit

나에게 가장 적합한 솔루션 : D
Gold Chicken

48

다음과 같이 두 단계 만 거치면됩니다.

1 단계:

의 정보 탭에서 project target행 추가 :

UIViewControllerBasedStatusBarAppearance, 설정 값 NO.

2 단계:

프로젝트에서 AppDelegate.m:

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

4
나는이 대답은 내가 "응용 프로그램"PARAM을 사용하고 처음의 사랑))
MUH 모바일 주식

점 표기법과 완벽;)
Rivera

43

이는 2013 년 9 월 18 일에 출시 된 Golden Master iOS 7 및 Xcode 5 GM seed 및 iOS7 SDK에서 작동합니다 (최소한 내비게이션 컨트롤러가 숨겨져 있음).

  1. 설정 the UIViewControllerBasedStatusBarAppearanceNOInfo.plist.

  2. 에서 ViewDidLoad방법 또는 어디, 어디 변경 상태 표시 줄 스타일 하시겠습니까 : [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];


1
UIViewControllerBasedStatusBarAppearance 기본값은 YES 인 것 같습니다. "앱은 기본적으로 새로운 뷰 컨트롤러 기반 상태 표시 줄 관리 시스템을 사용합니다.이 기능을 선택 해제하려면 Info.plist에 UIViewControllerBasedStatusBarAppearance 키에 NO 값을 추가하십시오." [ bgr.com/2013/09/10/ios-7-gm-change-log-release-notes/]
Zsolt

1
Ya !! UIViewControllerBasedStatusBarAppearance를 NO로 설정하면 상태 표시 줄이 뷰에서 숨겨집니다.
CashLee 李秉骏

모든 viewdidload에 적용해야합니까?
Arnlee Vizcayno

appDelegates didFinishLoading 메소드에서만 추가 할 수 있습니다. 또는 첫 번째보기에서 viewDidLoad 메서드를 변경하지 않으려면
Deniss Fedotovs

1
환상적으로이 일을했습니다. 간단하고 훌륭한 코딩.
Felipe

32

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

-[UINavigationBar setBarStyle:UIBarStyleBlack]

원래 답변은 여기

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


아니요, 탐색 막대 색상을 상태 표시 줄 텍스트 색상과 동일하게 만듭니다. 이것은 문제를 숨기고 해결하지는 않습니다!
wpearse

2
iOS7에서 뷰에 UINavigationController가 포함되어 있으면 상태 표시 줄이 UINavigationBar를 모방하므로 많은 경우 이것이 정답입니다.
jonstaff

29

Interface Builder 를 통해 내장 된 내비게이션 컨트롤러가있는 경우 내비게이션 컨트롤러 를 관리하는 클래스에서 다음을 설정해야합니다.

-(UIStatusBarStyle)preferredStatusBarStyle{ 
    return UIStatusBarStyleLightContent; 
} 

그게 당신이 필요한 전부입니다.


이것은 스토리 보드가없고 xib가없는 앱에서 나를 위해 일한 유일한 솔루션이었습니다. IB 이외의 사용자에게도 도움이됩니다.
Johnny Sparks

2
이것은 각 뷰 컨트롤러에서 스타일을 다르게 설정해야 할 때 완벽했습니다.
Ben

"컨트롤러 기반 상태 표시 줄보기"를 예로 설정하려면이 방법을 사용하십시오. 감사!
cloudsurfin

28

내가 사용하고 엑스 코드 A의 6 베타 5 스위프트 아이폰 OS 7 앱, 프로젝트.

여기 내가 한 일이 있으며 작동합니다.

info.plist :

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


2
감사합니다. 최신 버전의 IOS7
Dekel Maman으로

이 솔루션은 앱을로드하는 동안 시작 화면에 상태 표시 줄을 표시합니다.
Juan Boero

xCode 7.1에서 내 문제를 해결했습니다. 최신 버전. 애플은 무언가를 만들기 위해 몇 가지 중요한 부분을 잊었다. 다시.
Michael

22

AppDelegate.m에서 다음을 추가하십시오.

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

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

} 

Plist 파일에서 '제어기 기반 상태 표시 줄보기'를 NO로 설정하십시오.


20

Appdelegate에서 간단히

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

5
실제로 나를 위해 일한 유일한 대답.
Wim Haanstra

6
그러나이를 위해서는 View 컨트롤러 기반 상태 표시 줄 모양 을 선택 해제해야합니다 .
iamyogish 2013

iOS9에서 사용되지 않음
Dimitris

20

글쎄, 이것은 실제로 나를 위해 케이크 조각처럼 작동합니다.

앱으로 이동하십시오 info.plist.

  1. 설정 View controller-based status bar appearanceNO
  2. 설정 Status bar styleUIStatusBarStyleLightContent

그런 다음 앱의 대리자로 이동하여 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];
}

빙고. 나를 위해 일하고 있습니다.


1
나는 이것이 정답이라고 생각합니다 (plist의 일부) ... 옵션으로 didfinishlaunching에 정적 코드를 추가하는 이유는 무엇입니까? 전체 응용 프로그램에 동일한 색상이 필요한 경우 이것이 올바른 방법입니다
user2387149

20
  1. 이동 Project-> Target,

  2. 그런 다음로 설정 Status Bar Style하십시오 Light. 시작 화면에서 상태 표시 줄을 흰색으로 만듭니다. 프로젝트 설정

  3. 그런 다음 in View controller-based status bar appearance과 동일하게 설정하십시오 .NOInfo.plist


2
실제 View controller-based status bar appearance equal를 설정 한 두 번째 부분 NO은 내가 빠진 부분이었습니다. 감사합니다
Will

18

정보 PLIST 변경 Swift 3에서는 2 단계만으로 매우 쉽습니다. info.plist로 이동하여 키 View controller-based status bar appearance를 "NO"로 변경하십시오 . 그런 다음 Appdelegate에서 didfinishlaunchingwithoptions 메소드 에이 줄을 추가하십시오.

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

이것은 iOS9에서 더 이상 사용되지 않습니다. 이제 rootviewcontroller 에서이 속성을 재정의해야합니다

이 작업은 iOS 9에서 사용되지 않으며 rootviewcontroller 에서이 작업을 수행해야합니다

override var preferredStatusBarStyle: UIStatusBarStyle {
        return .lightContent
 }

1
정말 멋진 친구입니다 :) 감사합니다.
Naresh Reddy M

UIStatusBarStyle {반환 .lightContent} : 이것은 rootviewcontroller 재정의 VAR preferredStatusBarStyle에서이 작업을 수행해야합니다 아이폰 OS 9에서 사용되지 일
제임스 Rochabrun

17

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

iOS 7은 뷰 컨트롤러가 앱이 실행되는 동안 상태 표시 줄의 스타일을 조정할 수있는 기능을 제공합니다. 상태 표시 줄 스타일을 동적으로 변경하는 좋은 방법 preferredStatusBarStyle은 애니메이션 블록 내에서 상태 표시 줄 모양 을 구현 하고 업데이트하는 것 setNeedsStatusBarAppearanceUpdate입니다.

상태 표시 줄 모양을 전체적으로 설정하는 것은 2 단계 프로세스입니다.

먼저 iOS에 상태 표시 줄 모양을보기별로 설정하고 싶지 않다고 알려 주어야합니다.

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

View-by-View 상태 표시 줄 컨트롤을 비활성화하려면에서 View controller-based status bar appearance속성 을 설정해야합니다Info.plist .

프로젝트 네비게이터를 열고 iOS 앱용 프로젝트를 선택한 다음 정보 탭을 선택하십시오.

행 위로 마우스를 가져간 다음 표시되는 더하기 기호를 클릭하여 새 속성을 .plist .

View controller-based status bar appearance키 필드에 입력 한 후 유형 필드가로 설정되어 있는지 확인하십시오 Boolean. 마지막으로NO 값 필드에 .

상태 표시 줄의 전역 스타일을 설정하려면 정보 탭 아래에 키 Status bar style, 유형 String및 값을 사용하여 다른 속성을 추가하십시오 Opaque black style.

다음은 좀 더 자세한 내용과 샘플 코드가있는 블로그 게시물입니다.

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


감사. 내 문제는 "보기 컨트롤러 기반 상태 표시 줄 모양"의 유형이 문자열로 설정되어 있지 않은 것입니다. .plist 파일을 "손으로"편집하고 부울 값을 입력하면 문제가 해결됩니다.
Chris Prince

12

추가 할 필요가 없습니다. viewController 에이 코드를 작성하고 상태 표시 줄을 흰색으로하십시오.

- (UIStatusBarStyle)preferredStatusBarStyle{return UIStatusBarStyleLightContent;}

구현 후에 이것을 ViewController.m에 넣으십시오. 가장 쉽고 훌륭하게 작동합니다! 모 히트 감사합니다!
Phil Mulkins

12

Xcode GM Seed에 대한 답변이 업데이트되었습니다.

  1. Info.plist넣어 View controller-based status bar appearance으로NO

  2. 프로젝트에서 다음을 설정하십시오.

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

  3. ViewDidLoad에서 :

    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];


그것은 상태 표시 줄이 아니라 탭 표시 줄을 변경했습니다.
Keith

11

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

상태 표시 등 스타일이 필요한 위치에 따라 항상 다음 3 가지 점을 명심해야합니다.

1) 시작 화면이나 제어 할 수없는 다른 위치에 상태 표시 줄이 필요한 경우 (보기 컨트롤러가 아닌 시작 화면과 같은 일부 시스템 제어 요소 / 순간) 프로젝트 설정으로 이동합니다 프로젝트 설정

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

a) 내비게이션 컨트롤러의 내비게이션 바 선택 네비게이션 컨트롤러의 네비게이션 바를 선택하십시오

b) 그런 다음 탐색 모음의 스타일을 "검정색"으로 설정하십시오. 이는 상태 표시 줄 아래에 "검정색"-> 어두운 배경이 있으므로 상태 표시 줄이 흰색으로 설정되기 때문입니다.

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

또는 다음과 같이 코드에서 수행하십시오.

navigationController?.navigationBar.barStyle = UIBarStyle.Black

3) 자체 상태 표시 줄 스타일이 필요하고 UINavigationController와 같은 일부 컨테이너 구조에 포함되어 있지 않은 컨트롤러 만있는 경우

컨트롤러의 코드에서 상태 표시 줄 스타일을 설정하십시오.

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


귀하의 사례를 설명해 주시면 도와 드리겠습니다.
Fawkes

1
pList에 StatusBarIsIntiallyHidden = NO를 추가하고 plist에 ViewControllerBasedApplicationStatusBarAppearnce = NO를 추가해야했습니다. 그런 다음 1 부
Michael

첫 번째로드 뷰 컨트롤러와 동일한 "이미지"를 가진 스플래시 화면이 있습니까? 또한 대상의 "정보"섹션에서 "상태 표시 줄 숨기기"를 false로 설정하여 .plist를 처리하지 않아도됩니다. "StatusBarIsIntiallyHidden"플래그
Fawkes

나는하지 않습니다. 생성 된 기본 xib를 사용하고 있습니다.
Michael

xCode 7.1에서 새로운 프로젝트를 만들 때 실제로이 문제를 발견했습니다. 이것이 너무 이상하다고 생각하는 이유입니다.
Michael

10

단순히 전화

[[UINavigationBar appearance] setBarStyle:UIBarStyleBlack];

에서

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

내 방법은 AppDelegateiOS7에서 나에게 훌륭합니다.


와우, 여기에 쓰레기가 있지만이 대답은 나를 위해 일했습니다. 저는 Xcode 6 및 iOS 8 SDK를 사용하고 있습니다
Ethan Parker

1
훌륭함, iOS 9에서 작동View controller-based status bar appearance = NO
dstudeba

9

이 내용은 iOS 7 UI 전환 안내서 에 설명되어 있으며 직접 액세스하려면 Apple 개발자 ID가 필요합니다. 관련 발췌 :

상태 표시 줄은 투명하기 때문에 그 뒤의보기가 표시됩니다. [...] 사용UIStatusBarStyle 상수를 사용하여 상태 표시 줄 내용이 어둡거나 밝아 야하는지 지정 .

UIStatusBarStyleDefault어두운 내용을 표시합니다. [...]

UIStatusBarStyleLightContent가벼운 내용을 표시합니다. 어두운 내용이 상태 표시 줄 뒤에있을 때 사용하십시오.

또한 관심이있을 수 있습니다 :

iOS 7에서는 개별 vew 컨트롤러에서 상태 표시 줄 스타일을 제어하고 앱이 실행되는 동안 스타일 막대를 변경할 수 있습니다. 이 동작을 선택하려면 UIViewControllerBasedStatusBarAppearanceInfo.plist파일에 키를 추가 하고 값을 지정하십시오 YES.

문서를 살펴 보는 것이 좋습니다. 다시 Apple 개발자 ID로 액세스 할 수 있습니다.


3
이미 시도했습니다 [application setStatusBarStyle : UIStatusBarStyleLightContent]; 그러나 실제로 아무것도 변하지 않습니다. 텍스트 색상은 여전히 ​​검은 색입니다.
Oleksandr Veremchuk

나는 더 많은 도움을 받고 싶지만 내가 말하는 것처럼 iOS 개발 프로세스에 익숙하지 않아 제안해야 할 것을 알 수 없습니다. 죄송합니다!
Aaron Miller

1) plist에서 UIViewControllerBasedStatusBarAppearance를 YES로 설정하십시오. 2) viewDidLoad에서 [self setNeedsStatusBarAppearanceUpdate]를 수행하십시오. 3) 다음 메소드를 추가하십시오 .- (UIStatusBarStyle) preferredStatusBarStyle {return UIStatusBarStyleLightContent; }
Peter B. Kramer

9

다음은 Apple 지침 / 지침입니다상태 표시 줄 변경에 관한 은 . 상태 표시 줄에는 어둡고 밝음 (흑백) 만 허용됩니다.

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

상태 표시 줄 스타일, 응용 프로그램 수준을 설정 UIViewControllerBasedStatusBarAppearance하려면NO `.plist '파일에서 하십시오.

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

  1. 설정 UIViewControllerBasedStatusBarAppearanceYES.plist 당신의 UIViewController 수준 만 설정 상태 표시 줄 스타일을 필요로하는 경우, 파일.
  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
    }

}



결과는 다음과 같습니다.

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


8

나는 다른 일을했고 그것은 나를 위해 일한다.

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

  • 컨트롤러 기반 상태 표시 줄보기> 아니요
  • 상태 표시 줄 스타일> UIStatusBarStyleLightContent (단순 문자열)

도움이 되길 바랍니다.

편집하다

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


8

Swift와 동일한 결과를 원하면 AppDelegate.swift 파일에서이 코드를 사용할 수 있습니다.

UINavigationBar.appearance().barStyle = .BlackTranslucent

그리고 상태 표시 줄의 텍스트는 흰색입니다 :-)!


8

View controller-based status bar appearanceinfo.plist를 YES로 설정 하여 사용하려면 각 뷰 컨트롤러의 상태 표시 줄을 변경할 수 있음을 의미합니다. ViewDidLoad의 상태 표시 줄에있는 흰색 텍스트에 다음을 사용하십시오.

[[[self navigationController] navigationBar] setBarStyle:UIBarStyleBlackTranslucent];

탐색 표시 줄! = 상태 표시 줄.
Michael Peterson

... 해봤 어!? (그리고 네, 상태 표시 줄)
eirik

7

Plist에서 다음을 추가하십시오.

  • 상태 표시 줄 스타일 : UIStatusBarStyleLightContent
  • 컨트롤러 기반 상태 표시 줄보기 : NO

7

의 Info.plist 세트의 필드 값 NO 보기 컨트롤러 기반 상태 막대 모양 및 집합 상태 표시의 대상 스타일 등> 일반 설정.


2
우승자 우승자 닭 저녁 식사
tommybananas

7

귀하의 질문에 대한 완전한 답변을 드리겠습니다. 상태 표시 줄의 텍스트 색상을 변경하는 것은 매우 쉽지만 iOS 7에서는 초보자에게 약간 혼란 스럽습니다.

스토리 보드에서 뷰 컨트롤러를 선택하고 오른쪽의 Simulated Metrics로 이동하여 색상을 검정에서 흰색으로 변경하려고하면 작동하지 않으며 이유를 알 수 없습니다. 이 방법을 변경하면 작동합니다.

둘째, plist에서 UIViewControllerBasedStatusBarAppearance 속성을 찾지 못하지만 기본적으로는 없습니다. + 버튼을 클릭하여 직접 추가 한 다음 NO로 설정해야합니다.

iOS 7 상태 표시 줄 텍스트 색상

마지막으로 AppDelegate.m 파일로 이동하여 didFinishLaunchingWithOptions 메서드에 다음을 추가하고 다음 줄을 추가해야합니다.

     [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

모든 뷰 컨트롤러의 색상이 흰색으로 바뀝니다. 도움이 되었기를 바랍니다!


이 방법은 iOS 9에서 사용되지 않습니다
Trung Bui
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.