web-dev-qa-db-ja.com

ステータスバーの背景色をiOS 7以降に変更する

IOS 7のステータスバーの背景色を変更したいのですが、次のコードを使用しています。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    [UIApplication sharedApplication].statusBarHidden = NO;

        self.window.clipsToBounds = YES;
        [[UIApplication sharedApplication] setStatusBarStyle: UIStatusBarStyleLightContent];
        self.window.frame =  CGRectMake(0,20,self.window.frame.size.width,self.window.frame.size.height-20);
        self.window.bounds = CGRectMake(0, 20, self.window.frame.size.width, self.window.frame.size.height);

        ...
        ...


}

これを書くと、ステータスバーが黒の背景で表示されます。赤い背景にしたい。

ステータスバーの色を黒ではなく赤の背景に変更するにはどうすればよいですか?

15
Krunal

IOS 7以降では、ステータスバーはtransparentです。ビューのbackgroundColorをステータスバーに使用する色に設定します。

または、ビューの上部に赤い20pxのサブビューを追加できます。

詳細は Apple Transition Guide を参照してください。

また、preferredStatusBarStyleUIStatusBarStyleLightContentであることを確認してください。 Info.plistで、「コントローラーベースのステータスバーの表示」を「いいえ」に設定します。

15
iProgrammer

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];
27

目的C

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

    [[UIApplication sharedApplication] setStatusBarHidden:false];
    UIView *statusBar=[[UIApplication sharedApplication] valueForKey:@"statusBar"];
    statusBar.backgroundColor = [UIColor redColor];

    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];



    return YES;
}

これは私のために働いています。これもお役に立てば幸いです。

8

@Teja Kumar Bethinaが提供するものは役に立ちますが、以下のようにUIApplicationシングルトンからstatusBarの高さを取得することをお勧めします。

UIApplication *app = [UIApplication sharedApplication];

UIView *statusBarView = [[UIView alloc] initWithFrame:CGRectMake(0, -app.statusBarFrame.size.height, self.view.bounds.size.width, app.statusBarFrame.size.height)];
    statusBarView.backgroundColor = [UIColor blackColor];
5
Alan Feng

appDelegateでの使用

    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

プロジェクトのinfo.plistファイル

アプリでコントローラーベースのステータスバーの外観を表示するためにフラグNOを設定します。

3
Madhu

ステータスバーの色を渡して、ViewDidLoadからこの関数を呼び出します。

func setStatusBarBackgroundColor(color: UIColor)  
{
    guard  let statusBar = UIApplication.sharedApplication().valueForKey("statusBarWindow")?.valueForKey("statusBar") as? UIView 
    else 
    {
    return
    }
    statusBar.backgroundColor = color
}

それがお役に立てば幸いです。

3

自動レイアウトを使用するSwiftソリューションです。アプリケーションが縦向きまたは横向きの場合、バーは適切な幅になります。サブビューとしてナビゲーションバービューに追加されるため、-20だけオフセットされます。ナビゲーションバーの親ビューに追加すると、オフセットは不要になります。この例では、ナビゲーションバーと同じ色に設定されます。

それが役に立てば幸い:)

    // Add colored opaque view behind the status bar view
    let statusBarView = UIView()
    statusBarView.backgroundColor = navigationBar.backgroundColor
    statusBarView.translatesAutoresizingMaskIntoConstraints = false
    navigationBar.addSubview(statusBarView)

    let views = ["statusBarView": statusBarView]
    let hConstraint = "H:|-0-[statusBarView]-0-|"
    let vConstraint = "V:|-(-20)-[statusBarView(20)]"

    var allConstraints = NSLayoutConstraint.constraintsWithVisualFormat(hConstraint,
            options: [], metrics: nil, views: views)

    allConstraints += NSLayoutConstraint.constraintsWithVisualFormat(vConstraint,
            options: [], metrics: nil, views: views)

    NSLayoutConstraint.activateConstraints(allConstraints)
1
maninvan