Programing

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

lottogame 2020. 9. 28. 07:53
반응형

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


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


  1. 설정 UIViewControllerBasedStatusBarAppearanceYES.plist 파일에.

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

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

    - (UIStatusBarStyle)preferredStatusBarStyle
    { 
        return UIStatusBarStyleLightContent; 
    }
    

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

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

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

Swift 5 및 SwiftUI

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())

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

  1. 설정 View controller-based status bar appearanceNO당신에 Info.plist.
  2. 요구 [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

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


코드를 작성하지 않고도이 작업을 수행 할 수 있습니다!
다음을 수행하여 전체 앱에서 상태 표시 줄 텍스트 색상을 흰색으로 만듭니다.

당신 PLIST 프로젝트 파일을 :

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

참고 : 대부분의 찬성 응답은 iOS 7/8에서 작동하지 않습니다.

Info.plist에서 'View controller-based status bar appearance'를 NO로 설정하십시오.

AppDelegate에서 추가

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

...에

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

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


나를 위해 다른 답변 (및 다른 출처 / 문서)의 모든 것을 사용하는 데 아무런 변화가 없었습니다. XIB에서 탐색 모음 스타일을 "검정색"으로 설정하는 것이 도움이되었습니다. 이로 인해 코드가 전혀없이 텍스트가 흰색으로 변경되었습니다.

여기에 이미지 설명 입력


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

에서 Info.plist, 행을 추가 :

UIViewControllerBasedStatusBarAppearance, 값을 설정합니다 NO.

그런 다음의 AppDelegate에서 didFinishLaunchingWithOptions다음 행을 추가합니다.

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

이를 위해 어떤 코드도 할 필요가 없습니다

info.plist에 "View controller-based status bar appearance"키를 다음과 같이 추가해야합니다. 여기에 이미지 설명 입력

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

여기에 이미지 설명 입력

그게 다야.


다음과 같이 두 단계 만 수행하십시오.

1 단계:

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

UIViewControllerBasedStatusBarAppearance, 값을 설정합니다 NO.

2 단계:

프로젝트에서 AppDelegate.m:

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

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

  1. 설정 the UIViewControllerBasedStatusBarAppearanceNOInfo.plist.

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


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

-[UINavigationBar setBarStyle:UIBarStyleBlack]

원래 답변은 여기

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


Interface Builder 를 통해 생성 된 임베디드 탐색 컨트롤러가있는 경우 탐색 컨트롤러 를 관리하는 클래스에서 다음을 설정해야합니다.

-(UIStatusBarStyle)preferredStatusBarStyle{ 
    return UIStatusBarStyleLightContent; 
} 

그게 필요한 전부입니다.


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

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

info.plist :

여기에 이미지 설명 입력


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

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

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

} 

그리고 Plist 파일에서 'View controller-based status bar appearance'를 NO로 설정합니다.


간단히 Appdelegate

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

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

앱의 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. Project->로 이동하십시오 Target.

  2. 그런 다음로 설정 Status Bar Style합니다 Light. 시작 화면에서 상태 표시 줄이 흰색으로 표시됩니다.프로젝트 설정

  3. 다음 설정 View controller-based status bar appearance동일 NO에서 Info.plist.


정보 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
 }

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

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

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

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

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

뷰별 상태 표시 줄 컨트롤을 비활성화하려면에서 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/


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

- (UIStatusBarStyle)preferredStatusBarStyle{return UIStatusBarStyleLightContent;}

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

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

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

    여기에 이미지 설명 입력

  3. ViewDidLoad에서 :

    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];


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

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

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

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

a) 내비게이션 컨트롤러의 내비게이션 바 선택 내비게이션 컨트롤러의 내비게이션 바를 선택하세요.

b) 그런 다음 탐색 표시 줄의 스타일을 "검정색"으로 설정합니다. 상태 표시 줄 아래에 "검정색"-> 어두운 배경이 표시되므로 상태 표시 줄이 흰색으로 설정됩니다.

여기에 이미지 설명 입력

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

navigationController?.navigationBar.barStyle = UIBarStyle.Black

3) 자체 상태 표시 줄 스타일을 가져야하는 컨트롤러 만 있고 일부 컨테이너 구조에 UINavigationController로 포함되지 않은 경우

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

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


단순히 전화

[[UINavigationBar appearance] setBarStyle:UIBarStyleBlack];

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

AppDelegate작업 방법은 iOS7에서 나에게 좋습니다.


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

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

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

UIStatusBarStyleLightContent가벼운 내용을 표시합니다. 어두운 콘텐츠가 상태 표시 줄 뒤에있을 때 사용합니다.

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

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

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


다음은 상태 표시 줄 변경에 대한 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
    }

}



결과는 다음과 같습니다.

여기에 이미지 설명 입력


나는 다른 일을했고 그것은 나를 위해 작동합니다.

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

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

도움이되기를 바랍니다.

편집하다

각 뷰 컨트롤러에 대해 스토리 보드에서 "상태 표시 줄"의 Simulated Metrics 속성을 "inferred"에서 "Light Content"로 변경합니다.


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

UINavigationBar.appearance().barStyle = .BlackTranslucent

상태 표시 줄의 텍스트가 흰색으로 표시됩니다. :-)!


View controller-based status bar appearanceYES로 설정된 info.plist에서 계속 사용하려면 각 뷰 컨트롤러의 상태 표시 줄을 변경할 수 있습니다. ViewDidLoad의 상태 표시 줄에있는 흰색 텍스트에 다음을 사용하세요.

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

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

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

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


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

View Controller를 선택하고 오른쪽의 Simulated Metrics로 이동하여 Storyboard에서 색상을 검정에서 흰색으로 변경하려는 경우 작동하지 않으며 이유를 모르겠습니다. 이렇게 변경하면 작동하지만 어떻게해야합니다.

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

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

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

     [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

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

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

반응형