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);
...
...
}
これを書くと、ステータスバーが黒の背景で表示されます。赤い背景にしたい。
ステータスバーの色を黒ではなく赤の背景に変更するにはどうすればよいですか?
IOS 7以降では、ステータスバーはtransparentです。ビューのbackgroundColor
をステータスバーに使用する色に設定します。
または、ビューの上部に赤い20pxのサブビューを追加できます。
詳細は Apple Transition Guide を参照してください。
また、preferredStatusBarStyle
がUIStatusBarStyleLightContent
であることを確認してください。 Info.plistで、「コントローラーベースのステータスバーの表示」を「いいえ」に設定します。
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];
目的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;
}
これは私のために働いています。これもお役に立てば幸いです。
@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];
appDelegateでの使用
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
プロジェクトのinfo.plistファイル
アプリでコントローラーベースのステータスバーの外観を表示するためにフラグNOを設定します。
ステータスバーの色を渡して、ViewDidLoadからこの関数を呼び出します。
func setStatusBarBackgroundColor(color: UIColor)
{
guard let statusBar = UIApplication.sharedApplication().valueForKey("statusBarWindow")?.valueForKey("statusBar") as? UIView
else
{
return
}
statusBar.backgroundColor = color
}
それがお役に立てば幸いです。
自動レイアウトを使用する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)