特定のビューコントローラでステータスバーの色を変更したい。iPhoneでアプリケーションを切り替えるときにステータスバーの色を変更する際の問題
StackOverFlowの回答によると、私はそれを達成しました。
問題があります。 iPhoneでアプリケーションを切り替えると、色がフェードアウトして初期状態に戻ります。
問題ありません。ステータスバーに注意してください。
OKではありません。ステータスバーに注意してください。
は
UIView *statusBar = [[[UIApplication sharedApplication] valueForKey:@"statusBarWindow"] valueForKey:@"statusBar"]; if ([statusBar respondsToSelector:@selector(setBackgroundColor:)]) { statusBar.backgroundColor = [UIColor redColor ]; }
statusBar.backgroundColor
を設定します。
UIView *statusBar = [[[UIApplication sharedApplication] valueForKey:@"statusBarWindow"] valueForKey:@"statusBar"];
UIView * backgroundColorView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 375, 20) ];
backgroundColorView.autoresizingMask = UIViewAutoresizingFlexibleWidth;
backgroundColorView.backgroundColor = [UIColor redColor ];
[statusBar.subviews.firstObject insertSubview: backgroundColorView atIndex:0];
だから層(CALayerの)を挿入することです。
私はブレークポイントで解析しようとしました。
-アプリがアクティブで、[ホーム]ボタンをダブルクリックしてアプリを切り替えると、その方法は- (void)viewWillDisappear:(BOOL)animated
と呼ばれません。それは私を少し混乱させます。
-アプリケーションのメソッド- (void)applicationWillResignActive:(UIApplication *)application
でステータスバーの背景色を変更しようとしましたが、機能しません。どうしてか分かりません。
Githubのソースコードから、ランタイムでOKです。私の会社はランタイムを好きではありません。
他の方法がありますランタイムなし?
そして、ランタイムがiPhoneの切り替えアプリケーションモードとどのように関係しているのか分かりません。
主な質問は、ランタイムなしで解決することです。より多くの説明が歓迎されます。私はそれが簡単だと思います、何が恋しいですか?
多くの進歩に感謝します。スウィフト4用
アプリがアクティブでない間は、ステータスバーの色を変更できません。アプリケーション切り替えウィンドウでは、アプリケーションがウィンドウ上のアクティブなアプリケーションではないため、OSはステータスバーの色を制御します。だから私はあなたがしようとしていることは可能だとは思わない。 –
ご返信ありがとうございます。 [このリポジトリ](https://github.com/wangrui460/WRNavigationBar)は実行時には問題ありません。そして、app * meetup *もそれをより複雑にしました。 – dengApro
あなたは正しいです、私は** View **、 – dengApro