iOS 7에서 상태 표시 줄 배경색과 텍스트 색상을 변경하는 방법은 무엇입니까?


88

내 현재 애플리케이션은 iOS 5 및 6에서 실행됩니다.

탐색 표시 줄은 주황색이고 상태 표시 줄은 검은 색 배경색과 흰색 텍스트입니다. 그러나 iOS 7에서 동일한 응용 프로그램을 실행하면 상태 표시 줄이 탐색 표시 줄과 동일한 주황색 배경색으로 투명하게 보이고 상태 표시 줄 텍스트 색이 검은 색으로 보입니다.

이로 인해 상태 표시 줄과 탐색 표시 줄을 구분할 수 없습니다.

상태 표시 줄을 iOS 5 및 6에서와 같이 검정색 배경색과 흰색 텍스트 색상으로 표시하려면 어떻게해야합니까? 프로그래밍 방식으로 어떻게 할 수 있습니까?


이 링크가 도움을받을 수 있습니다 stackoverflow.com/questions/18901753/...
Utkarsh 고엘

답변:


174

경고 : iOS 13 및 Xcode 11에서는 더 이상 작동하지 않습니다.

================================================ ======================

나는 다른 방법을 찾아야했다. addSubview창문 에는 관여하지 않습니다 . 키보드가 나타나면 창 위로 이동하기 때문입니다.

목표 -C

- (void)setStatusBarBackgroundColor:(UIColor *)color {

    UIView *statusBar = [[[UIApplication sharedApplication] valueForKey:@"statusBarWindow"] valueForKey:@"statusBar"];

    if ([statusBar respondsToSelector:@selector(setBackgroundColor:)]) {
        statusBar.backgroundColor = color;
    }
}

빠른

func setStatusBarBackgroundColor(color: UIColor) {

    guard  let statusBar = UIApplication.sharedApplication().valueForKey("statusBarWindow")?.valueForKey("statusBar") as? UIView else {
        return
    }

    statusBar.backgroundColor = color
}

스위프트 3

func setStatusBarBackgroundColor(color: UIColor) {

    guard let statusBar = UIApplication.shared.value(forKeyPath: "statusBarWindow.statusBar") as? UIView else { return }

    statusBar.backgroundColor = color
}

이 양식을 호출하는 것이 application:didFinishLaunchingWithOptions저에게 효과적이었습니다.

NB이 로직을 사용하는 앱이 앱 스토어에 있습니다. 그래서 앱 스토어 정책은 괜찮은 것 같아요.


편집하다:

자신의 책임하에 사용하십시오. 댓글 작성자 @Sebyddd 구성

한 앱이이 원인을 거부하고 다른 앱은 정상적으로 허용되었습니다. 그들은 그것을 개인 API 사용으로 간주하므로 검토 과정에서 운이 좋을 것입니다. :) – Sebyddd


5
허용되는 솔루션과 달리 방향을 변경할 때도 작동합니다. 감사!
Michael

5
개인 API 사용이 아닌가요?
Foriger 2013-06-13

2
한 앱이이 원인을 거부하고 다른 앱은 정상적으로 허용되었습니다. 그들은 그것을 비공개 API 사용으로 간주하므로 검토 과정에서 운이
좋을

3
이 솔루션에 문제가 있습니다. 홈 버튼을 두 번 누르면이 상태 표시 줄 색상이 사라집니다.
Timeless

3
iOS 13에서는 작동하지 않습니다. UIApplication에서 -statusBar 또는 -statusBarWindow라는 앱 : 더 이상 상태 표시 줄 또는 상태 표시 줄 창이 없으므로이 코드 를 변경해야합니다 . 대신 창 장면에서 statusBarManager 개체를 사용합니다.
NSDeveloper

109

앱이 고토 info.plist

1) 설정 View controller-based status bar appearanceNO
2) 세트 Status bar styleUIStatusBarStyleLightContent

다음과 앱 위임 고토 당신이 당신의 윈도우의 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,[UIScreen mainScreen].bounds.size.width, 20)];
    view.backgroundColor=[UIColor blackColor];
    [self.window.rootViewController.view addSubview:view];
}

도움이되기를 바랍니다.


그냥 언급하자면, 애플 문서는 대신 체크하면 이것을 추천합니다 : if (NSFoundationVersionNumber <= NSFoundationVersionNumber_iOS_6_1) {} else {} 건배!
Joel Balmer 2014

2
@learner info.plist로 이동 한 다음 행을 선택합니다. + 기호가 표시됩니다. 더하기 기호를 클릭하고 드롭 다운에서 Status bar style옵션 을 볼 수 있습니다. 그것을 선택하십시오. UIStatusBarStyleLightContent값으로 붙여 넣 습니다.
Shahid Iqbal

5
이것은 회전을 고려하지 않습니다
lostintranslation 2014-09-09

4
UIScreen 너비를 사용하는 것이 더 좋습니다.UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, 20)];
KlimczakM

2
프레임을 설정하는 더 간결한 방법은 다음을 사용하는 것입니다UIApplication.sharedApplication().statusBarFrame
Doug

28

iOS 7에서 상태 표시 줄의 배경색을 처리하는 동안 2 가지 경우가 있습니다.

사례 1 : 탐색 모음이있는보기

이 경우 viewDidLoad 메서드에서 다음 코드를 사용하십시오.

 UIApplication *app = [UIApplication sharedApplication];
 CGFloat statusBarHeight = app.statusBarFrame.size.height;

 UIView *statusBarView = [[UIView alloc] initWithFrame:CGRectMake(0, -statusBarHeight, [UIScreen mainScreen].bounds.size.width, statusBarHeight)];
 statusBarView.backgroundColor = [UIColor yellowColor];
 [self.navigationController.navigationBar addSubview:statusBarView];

사례 2 : 탐색 모음없이보기

이 경우 viewDidLoad 메서드에서 다음 코드를 사용하십시오.

 UIApplication *app = [UIApplication sharedApplication];
 CGFloat statusBarHeight = app.statusBarFrame.size.height;

 UIView *statusBarView =  [[UIView alloc] initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, statusBarHeight)];
 statusBarView.backgroundColor  =  [UIColor yellowColor];
 [self.view addSubview:statusBarView];

소스 링크 http://code-ios.blogspot.in/2014/08/how-to-change-background-color-of.html


이것은 저에게 잘 맞았지만 상태 표시 줄은 20pt 높이 여야합니다. [[UIView alloc] initWithFrame : CGRectMake (0, -20, 320, 20)];
LordParsley

27

1) plist에서 UIViewControllerBasedStatusBarAppearance를 YES로 설정하십시오.

2) viewDidLoad에서 [self setNeedsStatusBarAppearanceUpdate];

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

 -(UIStatusBarStyle)preferredStatusBarStyle{ 
    return UIStatusBarStyleLightContent; 
 } 

업데이트 :
또한 확인 개발자 가이드 - 투 - IOS-7-상태 표시 줄을


검정색 또는 흰색으로 변경할 수 있습니다.
Muruganandham K 2013-09-28

1
이것은 효과가 없습니다 (ios7, 시뮬레이터). "preferredStatusBarStyle"은 호출되지 않습니다.
아담

1
xib를 사용하고 있습니까?. 예인 경우 시뮬레이션 된 메트릭 속성에서 상태 표시 줄 값을 변경합니다.
Muruganandham K

3
아, 문제를 찾았습니다. Apple의 UINavigationController가 알림을 가져옵니다. 즉,보기 컨트롤러가 최상위 컨트롤러 인 경우에만 답변이 제공되고 컨테이너가 없습니다 (탭바 없음, 탐색 바 없음 등).
아담

3
Storyboard + NavigationController를 사용할 때 특별한 경우입니다. 위의 # 1을 수행하십시오. 다음으로 UINavigationController에 대한 하위 클래스를 만듭니다 (myNavController라고 함). Storyboard에서 NavigationController의 클래스를 "myNavController"로 설정합니다. myNavController.m에서 위의 # 2 및 # 3을 수행합니다. 이제 # 3의 메서드가 하위 클래스에서 호출됩니다 (관찰 할 로그 또는 중단 점 설정).
ObjectiveTC

16

애플리케이션 시작 중 또는 뷰 컨트롤러의 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
    }

}



결과는 다음과 같습니다.

여기에 이미지 설명 입력


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

이 앱을 사용하면 앱이 거부됩니까? 이와 같이 statusBarView 색상을 변경할 수 있습니까?
abhimuralidharan

@ abhi1992 앱 스토어에 제출할 필요가없는 엔터프라이즈 애플리케이션에이 솔루션을 구현했기 때문에 애플이 수락할지 여부를 말할 수 없습니다. :)
Krunal

이것을 탭 기반 앱에서 viewcontroller의 viewdidload에 넣으면 모든 viewController의 색상을 설정합니다. 코드를 넣은

14

iOS 7에서는 상태 표시 줄에 배경이 없으므로 20px 높이의 검은 색보기를 뒤에 배치하면 iOS 6과 동일한 결과를 얻을 수 있습니다.

또한 당신은 읽을 수 있습니다 주제에 대한 자세한 내용 iOS 7 UI 전환 가이드 .


2
Gabriele, 20px 높이의 뷰를 배치하는 방법에 대한 코드를 제공해 주시겠습니까?
Dejell 2013 년

Dejel, 그것은 Shahid의 대답에 있습니다.
Fattie 2014 년

"20"만 사용하지 마십시오! 값을 올바르게 얻을 수 있습니다. 아래의 긴 대답을 참조하십시오.
Fattie

8

ViewDidLoad 메서드에 다음을 작성하십시오.

if ([self respondsToSelector:@selector(setEdgesForExtendedLayout:)]) {
    self.edgesForExtendedLayout=UIRectEdgeNone;
    self.extendedLayoutIncludesOpaqueBars=NO;
    self.automaticallyAdjustsScrollViewInsets=NO;
}

나에 대한 상태 표시 줄 색상과 다른 UI 위치도 어느 정도 수정되었습니다.


7

다음은 전체, 복사 및 붙여 넣기 솔루션입니다.

절대적으로 정확한 설명

관련된 모든 문제의.

Warif Akhand Rishi 에게 감사드립니다 !

keyPath에 관한 놀라운 발견을 위해 statusBarWindow.statusBar. 잘 했어.

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    
    // handle the iOS bar!
    
    // >>>>>NOTE<<<<<
    // >>>>>NOTE<<<<<
    // >>>>>NOTE<<<<<
    // "Status Bar Style" refers to the >>>>>color of the TEXT<<<<<< of the Apple status bar,
    // it does NOT refer to the background color of the bar. This causes a lot of confusion.
    // >>>>>NOTE<<<<<
    // >>>>>NOTE<<<<<
    // >>>>>NOTE<<<<<
    
    // our app is white, so we want the Apple bar to be white (with, obviously, black writing)
    
    // make the ultimate window of OUR app actually start only BELOW Apple's bar....
    // so, in storyboard, never think about the issue. design to the full height in storyboard.
    let h = UIApplication.shared.statusBarFrame.size.height
    let f = self.window?.frame
    self.window?.frame = CGRect(x: 0, y: h, width: f!.size.width, height: f!.size.height - h)
    
    // next, in your plist be sure to have this: you almost always want this anyway:
    // <key>UIViewControllerBasedStatusBarAppearance</key>
    // <false/>
    
    // next - very simply in the app Target, select "Status Bar Style" to Default.
    // Do nothing in the plist regarding "Status Bar Style" - in modern Xcode, setting
    // the "Status Bar Style" toggle simply sets the plist for you.
    
    // finally, method A:
    // set the bg of the Apple bar to white.  Technique courtesy Warif Akhand Rishi.
    // note: self.window?.clipsToBounds = true-or-false, makes no difference in method A.
    if let sb = UIApplication.shared.value(forKeyPath: "statusBarWindow.statusBar") as? UIView {
        sb.backgroundColor = UIColor.white
        // if you prefer a light gray under there...
        //sb.backgroundColor = UIColor(hue: 0, saturation: 0, brightness: 0.9, alpha: 1)
    }
    
    /*
    // if you prefer or if necessary, method B:
    // explicitly actually add a background, in our app, to sit behind the apple bar....
    self.window?.clipsToBounds = false // MUST be false if you use this approach
    let whiteness = UIView()
    whiteness.frame = CGRect(x: 0, y: -h, width: f!.size.width, height: h)
    whiteness.backgroundColor = UIColor.green
    self.window!.addSubview(whiteness)
    */
    
    return true
}

6

Shahid의 답변에 추가하기 위해-방향 변경 또는 다른 장치를 고려할 수 있습니다 (iOS7 +) :

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

  //Create the background
  UIView* statusBg = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.window.frame.size.width, 20)];
  statusBg.backgroundColor = [UIColor colorWithWhite:1 alpha:.7];

  //Add the view behind the status bar
  [self.window.rootViewController.view addSubview:statusBg];

  //set the constraints to auto-resize
  statusBg.translatesAutoresizingMaskIntoConstraints = NO;
  [statusBg.superview addConstraint:[NSLayoutConstraint constraintWithItem:statusBg attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:statusBg.superview attribute:NSLayoutAttributeTop multiplier:1.0 constant:0.0]];
  [statusBg.superview addConstraint:[NSLayoutConstraint constraintWithItem:statusBg attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:statusBg.superview attribute:NSLayoutAttributeLeft multiplier:1.0 constant:0.0]];
  [statusBg.superview addConstraint:[NSLayoutConstraint constraintWithItem:statusBg attribute:NSLayoutAttributeRight relatedBy:NSLayoutRelationEqual toItem:statusBg.superview attribute:NSLayoutAttributeRight multiplier:1.0 constant:0.0]];
  [statusBg.superview addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[statusBg(==20)]" options:0 metrics:nil views:NSDictionaryOfVariableBindings(statusBg)]];
  [statusBg.superview setNeedsUpdateConstraints];
  ...
}

예, 화면 크기와 방향을 처리하는 것이 훨씬 좋습니다. 또한이 코드 주위에 다음과 같이 추가하십시오. if (NSFoundationVersionNumber> NSFoundationVersionNumber_iOS_6_1)
Benjamin Piette

6

배경의 경우보기를 쉽게 추가 할 수 있습니다. 예를 들면 다음과 같습니다.

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:0.1];
[navbar addSubview:view];

여기서 "navbar"는 UINavigationBar입니다.


4
처음 두 줄은 맞습니다.하지만 마지막 줄은 [navigationController.view addSubview : view] 여야합니다. 상태 표시 줄과 겹치지 않는 상태 표시 줄의 20px 이후에보기를 추가하므로 UINavigationBar의보기가 아닌 UINavigationController의보기 내에 추가해야합니다.
Shahid Iqbal 2014 년

Swift에서 다음을 사용하십시오 : let rect = CGRect (x : 0, y : 0, width : UIScreen.main.bounds.width, height : UIApplication.shared.statusBarFrame.height) let bar = UIView (frame : rect) bar.backgroundColor = UIColor.white navigationController? .view.addSubview (bar)
JVS

5

스위프트 4 :

// 상태 표시 줄 배경색 변경

let statusBar = UIApplication.shared.value(forKeyPath: "statusBarWindow.statusBar") as? UIView

statusBar?.backgroundColor = UIColor.red

4

상태 표시 줄의 배경색 변경 : Swift :

let proxyViewForStatusBar : UIView = UIView(frame: CGRectMake(0, 0,self.view.frame.size.width, 20))    
        proxyViewForStatusBar.backgroundColor=UIColor.whiteColor()
        self.view.addSubview(proxyViewForStatusBar)

1

iOS 9의 swift 2.0의 경우

didFinishLaunchingWithOptions 아래의 앱 델리게이트에 다음을 배치합니다.

    let view: UIView = UIView.init(frame: CGRectMake(0, 0, UIScreen.mainScreen().bounds.size.width, 20))

    view.backgroundColor = UIColor.blackColor()  //The colour you want to set

    view.alpha = 0.1   //This and the line above is set like this just if you want 
                          the status bar a darker shade of 
                          the colour you already have behind it.

    self.window!.rootViewController!.view.addSubview(view)

이 작품은,하지만 난 정말이 스타일 처리하는 가장 좋은 방법은 생각하지 않습니다
마이클

1

iTroid23 솔루션이 저에게 효과적이었습니다. Swift 솔루션을 놓쳤습니다. 따라서 이것이 도움이 될 수 있습니다.

1) 내 plist에 다음을 추가해야했습니다.

<key>UIViewControllerBasedStatusBarAppearance</key>
<true/>

2) "setNeedsStatusBarAppearanceUpdate"를 호출 할 필요가 없습니다.

3) 신속하게 UIViewController에 이것을 추가해야했습니다.

override func preferredStatusBarStyle() -> UIStatusBarStyle {
    return UIStatusBarStyle.LightContent
}

:) "UIViewControllerBasedStatusBarAppearance는"키, 저를 도와 주셔서 감사합니다
LightNight

1

을 사용하는 경우 다음 UINavigationController과 같은 확장을 사용할 수 있습니다.

extension UINavigationController {
    private struct AssociatedKeys {
        static var navigationBarBackgroundViewName = "NavigationBarBackground"
    }

    var navigationBarBackgroundView: UIView? {
        get {
            return objc_getAssociatedObject(self,
                                        &AssociatedKeys.navigationBarBackgroundViewName) as? UIView
        }
        set(newValue) {
             objc_setAssociatedObject(self,
                                 &AssociatedKeys.navigationBarBackgroundViewName,
                                 newValue,
                                 .OBJC_ASSOCIATION_RETAIN)
        }
    }

    func setNavigationBar(hidden isHidden: Bool, animated: Bool = false) {
       if animated {
           UIView.animate(withDuration: 0.3) {
               self.navigationBarBackgroundView?.isHidden = isHidden
           }
       } else {
           navigationBarBackgroundView?.isHidden = isHidden
       }
    }

    func setNavigationBarBackground(color: UIColor, includingStatusBar: Bool = true, animated: Bool = false) {
        navigationBarBackgroundView?.backgroundColor = UIColor.clear
        navigationBar.backgroundColor = UIColor.clear
        navigationBar.barTintColor = UIColor.clear

        let setupOperation = {
            if includingStatusBar {
                self.navigationBarBackgroundView?.isHidden = false
                if self.navigationBarBackgroundView == nil {
                    self.setupBackgroundView()
                }
                self.navigationBarBackgroundView?.backgroundColor = color
            } else {
                self.navigationBarBackgroundView?.isHidden = true
                self.navigationBar.backgroundColor = color
            }
        }

        if animated {
            UIView.animate(withDuration: 0.3) {
                setupOperation()
            }
        } else {
            setupOperation()
        }
    }

    private func setupBackgroundView() {
        var frame = navigationBar.frame
        frame.origin.y = 0
        frame.size.height = 64

        navigationBarBackgroundView = UIView(frame: frame)
        navigationBarBackgroundView?.translatesAutoresizingMaskIntoConstraints = true
        navigationBarBackgroundView?.autoresizingMask = [.flexibleWidth, .flexibleBottomMargin]

        navigationBarBackgroundView?.isUserInteractionEnabled = false

        view.insertSubview(navigationBarBackgroundView!, aboveSubview: navigationBar)
    }
}

기본적으로 탐색 모음 배경을 투명하게 만들고 다른 UIView를 배경으로 사용합니다. setNavigationBarBackground탐색 컨트롤러 의 메서드를 호출 하여 상태 표시 줄과 함께 탐색 모음 배경색을 설정할 수 있습니다 .

그런 다음 setNavigationBar(hidden: Bool, animated: Bool)내비게이션 막대를 숨기고 싶을 때 확장 프로그램 에서 메서드 를 사용해야합니다. 그렇지 않으면 배경으로 사용 된보기가 계속 표시됩니다.


나에게 이것은 다른 많은 답변 문제를 완화했기 때문에 최선의 답변이었습니다. 단점은 고정 frame.size.height = 64이며 잘못된 것입니다. 높이를 얻는 최근 방법 중 하나는-> .view.window? .windowScene? .statusBarManager? .statusBarFrame.height ?? 0.
Gonçalo Gaspar

1

이 시도. appdelegate 클래스 didFinishLaunchingWithOptions함수 에서 다음 코드를 사용하십시오 .

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
[application setStatusBarHidden:NO];
UIView *statusBar = [[[UIApplication sharedApplication] valueForKey:@"statusBarWindow"] valueForKey:@"statusBar"];
if ([statusBar respondsToSelector:@selector(setBackgroundColor:)]) {
    statusBar.backgroundColor = [UIColor blackColor];
}

1

아래 코드 조각은 Objective C에서 작동합니다.

   if (@available(iOS 13.0, *)) {
      UIView *statusBar = [[UIView alloc]initWithFrame:[UIApplication sharedApplication].keyWindow.windowScene.statusBarManager.statusBarFrame] ;
      statusBar.backgroundColor = [UIColor whiteColor];
      [[UIApplication sharedApplication].keyWindow addSubview:statusBar];
  } else {
      // Fallback on earlier versions

       UIView *statusBar = [[[UIApplication sharedApplication] valueForKey:@"statusBarWindow"] valueForKey:@"statusBar"];
          if ([statusBar respondsToSelector:@selector(setBackgroundColor:)]) {
              statusBar.backgroundColor = [UIColor whiteColor];//set whatever color you like
      }
  }

iOS 13에서는 두 개의 상태 표시 줄이 표시됩니다.
kelin

0

막대 색상의 경우 : 막대에 대한 사용자 정의 배경 이미지를 제공합니다.

텍스트 색상의 경우 : iOS에서 텍스트 처리 정보의 정보를 사용하십시오.


1
이것은 텍스트 색상을 설정하는 것이 아닙니다
Johnykutty

당신은 그냥 단색을 설정하고이 즉석에서 색상 변경 할 수 있도록하려면 특히 불가능 할 경우 과잉 배경 이미지입니다 추가
halil_g

0

AppDelegate.cs메서드 에서 파일에 추가하는 매우 간단한 StatusBar 색상을 사용자 지정하는 데 성공했습니다 .

public override bool FinishedLaunching(UIApplication app, NSDictionary options)

다음 코드 :

UIView statusBar = UIApplication.SharedApplication.ValueForKey(new NSString("statusBar")) as UIView;

if (statusBar!=null && statusBar.RespondsToSelector(new Selector("setBackgroundColor:")))
{
   statusBar.BackgroundColor = Color.FromHex(RedColorHex).ToUIColor();
}

따라서 다음과 같은 결과가 나타납니다.

여기에 이미지 설명 입력

링크 : https://jorgearamirez.wordpress.com/2016/07/18/lesson-x-effects-for-the-status-bar/


이것이 무슨 언어 지?
Ahmadreza

1
@Alfi Xamarin 양식 및 백그라운드에서 C #
Dan

0

스위프트 4

에서 Info.plist이 속성을 추가

컨트롤러 기반 상태 표시 줄 모양을 NO로보기

그런 다음 AppDelegate내부 didFinishLaunchingWithOptions에 다음 코드 줄을 추가하십시오.

UIApplication.shared.isStatusBarHidden = false
UIApplication.shared.statusBarStyle = .lightContent

0

Swift 5 및 Xcode 10.2에서

DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + Double(Int64(0.1 * Double(NSEC_PER_SEC))) / Double(NSEC_PER_SEC), execute: {

//Set status bar background colour
let statusBar = UIApplication.shared.value(forKeyPath: "statusBarWindow.statusBar") as? UIView
statusBar?.backgroundColor = UIColor.red
//Set navigation bar subView background colour
   for view in controller.navigationController?.navigationBar.subviews ?? [] {
      view.tintColor = UIColor.white
      view.backgroundColor = UIColor.red
   }
})

여기에서 상태 표시 줄 배경색과 탐색 표시 줄 배경색을 수정했습니다. 탐색 모음 색상을 원하지 않는 경우 주석을 추가하십시오.


0

신속한 코드

            let statusBarView = UIView(frame: CGRect(x: 0, y: 0, width: view.width, height: 20.0))
            statusBarView.backgroundColor = UIColor.red
            self.navigationController?.view.addSubview(statusBarView)

0

iOS 13 * 및 Swift 4의 경우 아래와 같이 사용할 수 있습니다.

1->보기 컨트롤러 기반 상태 표시 줄 모양을 NO로 설정

extension UIApplication {
var statusBarView: UIView? {
    if #available(iOS 13.0, *) {
       let statusBar =  UIView()

        statusBar.frame = UIApplication.shared.statusBarFrame

        UIApplication.shared.keyWindow?.addSubview(statusBar)
      
        return statusBar
    } else {
        let statusBar = UIApplication.shared.value(forKeyPath: "statusBarWindow.statusBar") as? UIView
        return statusBar
    }
}

didFinishLaunchingWithOptions에서 사용

UIApplication.shared.statusBarView?.backgroundColor = UIColor.red
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.